Ich versuche, alle Preise und Steuern nach Datumsbereich (nicht notwendig, das gleiche Datum) in 2 Spalten und Gruppen nach ID zu extrahieren. Weil ich von zwei anderen Spalten zu gruppieren müssen, weil T-SQL muß, dass:TSQL-Gruppe durch doppelte Zeile generieren
Spalte ‚...‘ in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion oder die GROUP BY enthalten sind Klausel.
Ich habe manchmal eine doppelte Benutzer/ID. (Weiß nicht, warum durch die Art und Weise ..)
Ich habe diese SQL:
WITH myQuery AS
(
Select
c.name, c.id,
CASE
WHEN g.dateCreated BETWEEN CAST ('2016-06-01 00:00:00.000' AS DATETIME)
AND CAST ('2017-05-31 23:59:59.000' AS DATETIME)
THEN SUM(CAST(g.price AS decimal(20,2)))
ELSE 0
END AS TOTAL_PRICE,
CASE
WHEN g.dateCreated BETWEEN CAST ('2016-01-01 00:00:00.000' AS DATETIME)
AND CAST ('2016-12-31 23:59:59.000' AS DATETIME)
THEN SUM(CAST(g.tax AS decimal(20,2)))
ELSE 0
END AS TOTAL_TAX
FROM customers c
inner join goodies g
ON c.id = g.customer_id
GROUP BY c.name, c.id, g.dateCreated
)
SELECT count(*) FROM myQuery
Ich habe 5203 Zeilen. Ich habe nur 5031 Benutzer.
Wenn ich meine Daten analysiere, habe ich einige doppelte Daten.
Beispiel:
Alex, 12, 0.00, 0.00
Alex, 12, 100.00, 14.55
Nancy, 4, 0.00, 0.00
Arthur, 97, 48.14, 09.17
ich zu einer Gruppe von id nur versucht, aber es scheint, dass ich das nicht tun kann.
Warum habe ich doppelte Daten und wie kann ich das verhindern und sicherstellen, dass ich eine Zeile von USER habe, auch wenn sie keine Goodies kaufen?
Offensichtlich 'CUSTOMER_ID 12' hat mehr als eine gute Sachen, was auch immer Leckereien sind. Versuchen Sie 'SELECT * FROM Goodies WHERE customer_id = 12' und sehen Sie, ob Sie mehr als 1 Datensätze erhalten. – Eric
Versuchen Sie, SUM außerhalb der CASE-Anweisung zu verschieben und g.dateCreated aus GROUP BY zu entfernen. – McNets