2

私は現在、これを機能させるのに苦労しています。

SELECT        Y, SUM(N) AS sumDK, NULL AS sumFI, NULL AS sumNO, NULL AS sumSE
FROM            stat
WHERE        (C = 'Denmark')
GROUP BY Y
UNION ALL
SELECT        Y, NULL AS sumDK, SUM(N) AS sumFI, NULL AS sumNO, NULL AS sumSE
FROM            stat
WHERE        (C = 'Finland')
GROUP BY Y
UNION ALL
SELECT        Y, NULL AS sumDK, NULL AS sumFI, SUM(N) AS sumNO, NULL AS sumSE
FROM            stat
WHERE        (C = 'Norway')
GROUP BY Y
UNION ALL
SELECT        Y, NULL AS sumDK, NULL AS sumFI, NULL AS sumNO, SUM(N) AS sumSE
FROM            stat
WHERE        (C = 'Sweden')
GROUP BY Y

このクエリにより、次のようなマトリックスが得られます。

Y | sumDK | sumFI | sumNO | sumSE
----------------------------------
2011| 25 | NULL | NULL | NULL 
2012| 5 | NULL | NULL | NULL 
2011| NULL | 18 | NULL |NULL 
2012| NULL | 5 | NULL |NULL 
......

NOT NULL フィールドのみを返すクエリを実行するにはどうすればよいですか? 前もって感謝します!

4

4 に答える 4

3
SELECT      Y, C, SUM(N) 'Sum'
FROM        stat
WHERE       C IN ( 'Denmark', 'Finland', 'Norway', 'Sweden' )
GROUP BY    Y, C
于 2012-04-26T15:58:42.600 に答える
1

テーブルを一度通過し、それぞれの列の一致を合計してクロス集計として作成します

select
      Y,
      SUM( IIF( C = 'Denmark', N, 0 )) as SumDenmark,
      SUM( IIF( C = 'Finland', N, 0 )) as SumFinland,
      SUM( IIF( C = 'Norway', N, 0 )) as SumNorway,
      SUM( IIF( C = 'Sweden', N, 0 )) as SumSweden,
      sum( N ) totalSumValue,
      count(*) totalEntries
   FROM 
      STAT
   WHERE
      C IN ( 'Denmark', 'Finland', 'Norway', 'Sweden' )
  GROUP BY 
      Y
于 2012-04-26T16:08:43.980 に答える
0

最良の推測-試すのに便利なアクセスがありません- TRANSFORMを使用:

TRANSFORM SUM(N)
  SELECT Y FROM STAT
  GROUP BY Y
  ORDER BY Y
  PIVOT C
于 2012-04-26T16:27:34.847 に答える
0

それらをすべて異なる名前にする必要がありますか?どうですか

SELECT        Y, SUM(N) AS sum, C
FROM            stat
WHERE        (C = 'Denmark')
GROUP BY Y
UNION ALL
SELECT        Y, SUM(N) AS sum, C
FROM            stat
WHERE        (C = 'Finland')
GROUP BY Y
UNION ALL
SELECT        Y, SUM(N) AS sum, C
FROM            stat
WHERE        (C = 'Norway')
GROUP BY Y
UNION ALL
SELECT        Y, SUM(N) AS sum, C
FROM            stat
WHERE        (C = 'Sweden')
GROUP BY Y
于 2012-04-26T15:57:54.193 に答える