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 回答