2016-07-12 6 views
-1

Ich versuche, einen Bericht zu erhalten, der mir Daten in vier Viertel gibt.Erhalten Sie Daten in 4 Quartalen in SQL Server

Zum Beispiel von

1/1/2015-3/31/2015 as Q1 
4/1/2015-6/30/2015 as Q2 
7/1/2015-9/30/2015 as Q3 
10/1/2015- 12/31/2015 as Q4 

sind die Daten in diesem Format: 2015.01.01 00: 00.000.

Wie bekomme ich die Ausgabe von Daten in 4 Quartalen in SQL Server?

edits--

so habe ich versucht:

select count (cctransactions), avg(visits) 
(CASE WHEN MONTH(1/1/2015) >= 1 AND MONTH(3/31/2015) <=3 THEN'Q1' 
WHEN MONTH(4/1/2015) >= 4 AND MONTH(6/30/2015) <=6 THEN'Q2' 
WHEN MONTH(7/1/2015) >= 7 AND MONTH(9/31/2015) <=9 THEN'Q3' 
WHEN MONTH(10/1/2015) >= 10 AND MONTH(12/31/2015) <=12 THEN 'Q4' END) AS 'QUARTER' 
FROM [Database].[dbo].[transactionMaster] 
Group by cctransactions, ‘Quarter’ 

Es mir ein Fehler gab BY-Ausdruck sagen GROUP mindestens eine Spalte enthalten, die nicht eine äußere Referenz. Ich bin nicht sicher, wie man eine äußere Auswahl trifft.

+0

Was Ihre Felder und Tabellennamen sind - was ist die SQL-Sie habe es versucht? – dbmitch

+0

Ich habe versucht: Wählen Sie Anzahl (cctransactions), Durchschnitt (Besuche) (CASE WENN MONAT (1/1/2015)> = 1 UND MONAT (31.03.2015) <= 3 THEN'Q1 ' WANN MONAT (4/1/2015)> = 4 UND MONAT (30.06.2015) <= 6 THEN'Q2 ' WANN MONAT (7/1/2015)> = 7 UND MONAT (9/31/2015) <= 9 THEN'Q3 ' WENN MONAT (01.10.2015)> = 10 UND MONAT (31.12.2015) <= 12 DANN' Q4 'END) ALS' QUARTAL ' FROM [Datenbank]. [Dbo]. [ transactionmaster] Ich konnte jetzt die Quartale bekommen und jetzt möchte ich die Anzahl der Transaktionen und die durchschnittliche Anzahl der Besuche in Q1, Q2, Q3 und Q4 zählen und eine Tabelle bekommen, die es gut erklärt. – Sessions

Antwort

0

Nicht sicher, ob dies das ist, was Sie erreichen möchten. Aber ich würde vorschlagen, MONTH und CASE-Anweisung zu verwenden. Dies kennzeichnet die Daten, zu welchen Vierteln sie gehören.

SELECT 
    CASE 
     WHEN MONTH(FieldDate) >= 1 AND MONTH(FieldDate) <=3 
     THEN 
      'Q1' 
     WHEN MONTH(FieldDate) >= 4 AND MONTH(FieldDate) <=6 
     THEN 
      'Q2' 
     WHEN MONTH(FieldDate) >= 7 AND MONTH(FieldDate) <=9 
     THEN 
      'Q3' 
     WHEN MONTH(FieldDate) >= 10 AND MONTH(FieldDate) <=12 
     THEN 
      'Q4' 
    END 'QUARTER', 
    Field1, 
    Field2, 
    ... 
    FieldX 
FROM 
    [DataBase].[dbo].[SomeTable]; 
WHERE 
    YEAR(FieldDate) = @YEAR 
+0

Verwenden Sie eine äußere Auswahl aus der obigen Abfrage und Gruppieren nach Quartal. Natürlich müssen Sie die Transaktionen in der Unterabfrage auswählen. –

0

Um herauszufinden, welche Quartal ein Datum in Gebrauch ist

DATEPART(QUARTER, @theDate) 

Wenn Sie dies als Q1 formatiert wollen etc, dann schreibe einfach 'Q' :)

können Sie GROUP BY dies, wenn Sie möchte Ihren Bericht nach Quartal zusammenfassen.

Erwägen Sie einen Termin Tabelle auf Ihre Bewerbung mit vorausberechneten Viertel, ersten/letzten Tag des Monats, Finanzperioden usw.

https://msdn.microsoft.com/en-AU/library/ms174420.aspx

+0

Anzahl (cctransactions), avg (Besuche), DATEPART (QUARTER, QuoteIssueDate) als 'Quartal' FROM [Datenbank]. [Dbo]. [TransactionMaster] Gruppe von 'Quater' Ich bekomme eine Fehlermeldung Each GROUP BY Der Ausdruck muss mindestens eine Spalte enthalten, die keine äußere Referenz ist. Was mache ich falsch? – Sessions

Verwandte Themen