2016-10-31 4 views
0

Ich versuche, in einem zwei Ergebnisspalte concact. Meine Frage ist:Concat zwei Spalten mit Datumsteil

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 

Ich mag würde die erste Säule erhalten wie folgt als Folge:

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

Ich habe versucht, „Wählen Sie Concat (Datepart (Jahr zu verwenden, Datum), Datepart (Quarter , Date)“und einige andere Dinge, die nicht funktioniert hat. Ist das, was ich überhaupt möglich machen wollen?

+3

Was ist der Fehler, den Sie bekommen?. Welche Version von 'SQL SERVER' Sie verwenden –

Antwort

1

Ue 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; 

Diese eine Zeichenfolge zurückgibt, so dass Sie nicht über Umwandlung zu kümmern.

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

Datepart einen numerischen zurückgibt. es vor Verkettung Zeichenfolge konvertieren.

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

Sie können auch eine Funktion, die einen String zurückgibt, wie [DATENAME] (https://msdn.microsoft.com/en-GB/library/ms174395.aspx?f=255&MSPPError = -2147217396). Aber ich bevorzuge @ NagarajRaveendrans Seelenbildung. –

Verwandte Themen