0

テーブルにある場合は、10 列とします。8 列のデータと、識別子としての 2 列 (1 と 2)。

col1 と col2 の考えられるすべてのシナリオについて、8 列の「結果」を計算したいと思います。

distinct(value) col1 が {A,B,C} を与え、distinct(value) col2 が {D,E,F} を与えると仮定します。データ (8 列のいずれか) を合計したいと思います。

  • 広告
  • あ、え
  • A,F
  • A,(col2のすべて)
  • B,D
  • なれ
  • B,F
  • B,(col2のすべて)
  • CD
  • 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
---- ---- --------
AD      × ADAE × 
AE      _
あ … …
BD      × BD 
BE      × BE
B … …
NULL   x AD + x AE + …
B ヌル  x BD + x BE + …
NULL D      × AD× BD+…
NULL E      x AE + x BE + …
… … …
NULL NULL   x AD + x AE + … + x BD + x BE + …
于 2012-05-31T12:32:05.517 に答える