2016-10-31 4 views
0

2つの結果カラムを1つにまとめようとしています。 私のクエリは次のとおりです。concat 2つのカラムにdatepartが含まれています

SELECT Datepart(Year, Date) As Annee, Datepart(Quarter, Date) AS Trimestre, 
Sum(CASE WHEN [Type] = 'A' THEN 1 ELSE 0 END) A, 
Sum(CASE WHEN [Type] = 'B' THEN 1 ELSE 0 END) B 
FROM myTable 
WHERE Date between '20150401' and '20160930' 
GROUP BY Datepart(Year, Date), DATEPART(Quarter, Date) 
ORDER BY 1,2 

私は次のように最初の列を結果として取得したいと思います:

| Period | A | B | 
    2015 - 2 
    2015 - 3 
    2015 - 4 
    ... 

私は「選択の連結方式(DATEPART(年、日)、DATEPART(四半期を使用しようとしました、日付)」と動作しませんでしたいくつかの他のものは。私も可能何をしたいですか?

+3

エラーは何ですか?どのバージョンのSQL Serverを使用していますか –

答えて

1

うえdatename()

SELECT datename(Year, Date) + ' - ' + datename(Quarter, Date) as Trimestre, 
     Sum(CASE WHEN [Type] = 'A' THEN 1 ELSE 0 END) as A, 
     Sum(CASE WHEN [Type] = 'B' THEN 1 ELSE 0 END) as B 
FROM myTable 
WHERE Date between '20150401' and '20160930' 
GROUP BY datename(Year, Date) + ' - ' + datename(Quarter, Date) 
ORDER BY 1, 2; 

これは、文字列を返すので、あなたは、変換を心配する必要はありません。

0
SELECT 
    CONCAT(CONVERT(VARCHAR(4), 
    Datepart(Year,Date)), ' - ', 
    CONVERT(VARCHAR(1), 
    Datepart(Quarter, Date))), ... 
3

DATEPARTは数値を返します。連結前に文字列に変換します。

select convert(varchar(4),datepart(year, getdate())) + ' - ' + convert(varchar(2),datepart(month, getdate())) 
+0

[DATENAME](https://msdn.microsoft.com/en-GB/library/ms174395.aspx?f=255&MSPPError)のような文字列を返す関数を使用できます= -2147217396)。しかし、私は@ NagarajRaveendranの魂を好む。 –

関連する問題