0

私の
mssqlの問題を手伝ってください。私はテーブルのいくつかの構造を持っています:

Category   amt    year  month  
cat1      800.00  2013  jan  
cat2       30.00  2013  jan  
cat3      120.00  2013  feb  
cat4      125.00  2013  feb  

データが(月ごとにグループ化されて)来るようにしたい例...

Month    cat1     cat2     cat3     cat4  
jan     800.00    30.00     0.00     0.00  
feb       0.00     0.00   120.00   125.00  
4

2 に答える 2

1

これにはPIVOTを使用できます。クエリを確認してください:

SELECT 
    [Month], 
    isnull(cat1, 0.00) cat1, 
    isnull(cat2, 0.00) cat2, 
    isnull(cat3, 0.00) cat3, 
    isnull(cat4, 0.00) cat4 
FROM(
        SELECT 'cat1' Category, 800.00 amt,2013 [year], 'jan' [month] UNION
        SELECT 'cat2' Category, 30.00 amt, 2013 [year], 'jan' [month] UNION
        SELECT 'cat3' Category, 120.00 amt, 2013 [year], 'feb' [month] UNION
        SELECT 'cat4' Category, 125.00 amt, 2013 [year], 'feb' [month]
    )UP
    PIVOT (SUM(amt) FOR Category IN (cat1, cat2, cat3, cat4)) AS PVT
于 2013-03-08T10:35:51.940 に答える
1

私の理解が正しければ、クロスタブでデータを取得したいですか?その場合は、ピボット テーブルを使用できます。

select
    month
  , coalesce(cat1,0) as cat1
  , coalesce(cat2,0) as cat2
  , coalesce(cat3,0) as cat3
  , coalesce(cat4,0) as cat4
from tbl
pivot(sum(amt) for category in ([cat1], [cat2], [cat3], [cat4])) p
于 2013-03-08T10:41:25.717 に答える