GROUP BY ALL
Man lernt nie aus, ich zumindest nicht. Und beim Blättern in der BOL bin ich darüber gestolpert, das man bei GROUP BY noch ein ALL angeben kann. Was bewirkt es? Es hebelt sozusagen die WHERE Klausel aus und liefert alle Datensätze, nur die Aggregation wird nur auf die Datensätze angewandt, die der WHERE Klausel entsprechen.
Merkwürdige Option ... und sollte man auch nicht wirklich verwenden, denn: GROUP BY ALL wird in einer zukünftigen Version von Microsoft SQL Server nicht mehr unterstützt.
SELECT O.CustomerID, DATEPART(yyyy, O.DueDate), SUM(O.SubTotal)
FROM AdventureWorks.Sales.SalesOrderHeader AS O
WHERE DATEPART(yyyy, O.DueDate) = 2004
GROUP BY ALL O.CustomerID, DATEPART(yyyy, O.DueDate)
Ergebnis:
| CustomerID | Year | SubTotal |
| 19956 | 2002 | NULL |
| 15987 | 2003 | NULL |
| 22605 | 2004 | 1750,98 |
| 269 | 2002 | NULL |
| 29193 | 2004 | 49,97 |
| 25976 | 2004 | 2384,07 |
| 25638 | 2003 | NULL |
| 12569 | 2004 | 74,98 |
| 14530 | 2004 | 36,27 |
| 21011 | 2003 | NULL |
| 26894 | 2003 | NULL |
| 22972 | 2003 | NULL |
| 17243 | 2003 | NULL |
| 16538 | 2003 | NULL |
| 20460 | 2003 | NULL |
| 26343 | 2003 | NULL |
| 15649 | 2002 | NULL |
| 23476 | 2004 | 4,99 |
| Usw… |
|
|