Guest User

Untitled

a guest
Aug 15th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. SQL Server - Query Each Group of a Group By
  2. SELECT A, B, C,
  3. CASE
  4. WHEN 1 = (
  5. SELECT COUNT(DISTINCT D)
  6. FROM MyTable tbl2
  7. WHERE tbl2.A = tbl.A AND tbl2.B = tbl.B and tbl2.C = tbl.C
  8. )
  9. THEN (
  10. SELECT AVG(D)
  11. FROM MyTable tbl3
  12. WHERE tbl3.A = tbl.A AND tbl3.B = tbl.B and tbl3.C = tbl.C
  13. )
  14. ELSE SUM(D)
  15. FROM MyTable tbl
  16. GROUP BY A, B, C
  17.  
  18. Table:
  19. | Code | Qty | ColumnA | ColumnB |
  20. | A | 100 | 3 | 100 |
  21. | A | 100 | 4 | 200 |
  22. | A | 0 | 0 | 300 |
  23. | B | 0 | 0 | 400 |
  24. | B |100 | 1 | 500 |
  25.  
  26. SELECT Code, SUM(ColumnB),
  27. (SELECT AVG(ColumnA) FROM Table WHERE Code = tbl.Code AND Qty <> 0) AS ColumnA
  28. FROM Table tbl
  29. GROUP BY Code
  30.  
  31. | Code | ColumnA | ColumnB |
  32. | A | 3.5 | 600 |
  33. | B | 1 | 900 |
  34.  
  35. SELECT Code
  36. , AVG(CASE WHEN ColumnA<>0 THEN ColumnA ELSE NULL END) AS ColumnA
  37. , SUM(ColumnB) AS ColumnB
  38. FROM Table tbl
  39. GROUP BY Code
Add Comment
Please, Sign In to add comment