2012-05-31 56 views
0

如果我在桌子上,比如說10列。 8列數據和2列(1和2)作爲標識符。基於組的所有值以及它們的總和值?

我想爲col1和col2的每個可能的場景計算8列的「結果」。

假設不同(值)col1給出{A,B,C}和不同(值)col2給出{D,E,F}我想總結數據(8列中的任何一列)GROUP'd BY:

  • A,d
  • A,E
  • A,F
  • A,(全COL2的)
  • B,d
  • B,E
  • B, F
  • B,(全COL2的)
  • C,d
  • C,E
  • C,F
  • C,(全COL2的)
  • (全COL1的),(所有的COL2)
  • d,(全COL1的)
  • E,(全COL1的)
  • 女,(全COL1的)

回答

3
SELECT 
    SUM(colx) OVER (PARTITION BY Col1)  AS [All of col1], 
    SUM(colx) OVER (PARTITION BY Col2)  AS [All of col2], 
    SUM(colx) OVER (PARTITION BY Col1, Col2) AS [PerCol1Col2Pair], 
    SUM(colx) OVER()      AS [All of col1 and All of col2] 
FROM 
    MyTable 
0

GROUP BY CUBE()在我看來,(見GROUP BY (Transact-SQL)):

SELECT 
    col1, 
    col2, 
    COUNT(*) AS cnt 
FROM atable 
GROUP BY CUBE(col1, col2) 

這會產生類似下面的結果:

 
col1 col2 cnt 
---- ---- -------- 
A  D  xAD 
A  E  xAE 
A  …  … 
B  D  xBD 
B  E  xBE 
B  …  … 
A  NULL xAD + xAE + … 
B  NULL xBD + xBE + … 
NULL D  xAD + xBD + … 
NULL E  xAE + xBE + … 
…  …  … 
NULL NULL xAD + xAE + … + xBD + xBE + …