0

如果我在餐桌上,说 10 列。8 列数据和 2 列(1 和 2)作为标识符。

我想为 col1 和 col2 的每种可能情况计算 8 列的“结果”。

假设 distinct(value) col1 给出 {A,B,C} 而 distinct(value) col2 给出 {D,E,F} 我想总结数据(8 列中的任何一个)GROUP'd BY:

  • 广告
  • 甲,乙
  • A,F
  • A,(所有 col2)
  • 乙,丁
  • 乙,乙
  • B,(所有 col2)
  • 光盘
  • C,E
  • C,F
  • C,(所有 col2)
  • (所有 col1),(所有 col2)
  • D,(所有 col1)
  • E,(所有 col1)
  • F,(所有 col1)
4

2 回答 2

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
于 2012-05-31T11:09:22.847 回答
0

在我看来,您想要GROUP BY CUBE()(参见GROUP BY (Transact-SQL)):

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

这将产生如下结果:

col1 col2 cnt
---- ---- --------
广告     x广告
AE      x AE
一种 … …
BD      x BD 
BE      x BE
乙……
A NULL   x AD + x AE + ...
B 空  x BD + x BE + ...
空 D      x AD + x BD + ...
NULL E      x AE + x BE + …
…………
NULL NULL   x AD + x AE + … + x BD + x BE + …
于 2012-05-31T12:32:05.517 回答