Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SQL Server - Query Each Group of a Group By
- SELECT A, B, C,
- CASE
- WHEN 1 = (
- SELECT COUNT(DISTINCT D)
- FROM MyTable tbl2
- WHERE tbl2.A = tbl.A AND tbl2.B = tbl.B and tbl2.C = tbl.C
- )
- THEN (
- SELECT AVG(D)
- FROM MyTable tbl3
- WHERE tbl3.A = tbl.A AND tbl3.B = tbl.B and tbl3.C = tbl.C
- )
- ELSE SUM(D)
- FROM MyTable tbl
- GROUP BY A, B, C
- Table:
- | Code | Qty | ColumnA | ColumnB |
- | A | 100 | 3 | 100 |
- | A | 100 | 4 | 200 |
- | A | 0 | 0 | 300 |
- | B | 0 | 0 | 400 |
- | B |100 | 1 | 500 |
- SELECT Code, SUM(ColumnB),
- (SELECT AVG(ColumnA) FROM Table WHERE Code = tbl.Code AND Qty <> 0) AS ColumnA
- FROM Table tbl
- GROUP BY Code
- | Code | ColumnA | ColumnB |
- | A | 3.5 | 600 |
- | B | 1 | 900 |
- SELECT Code
- , AVG(CASE WHEN ColumnA<>0 THEN ColumnA ELSE NULL END) AS ColumnA
- , SUM(ColumnB) AS ColumnB
- FROM Table tbl
- GROUP BY Code
Add Comment
Please, Sign In to add comment