我有一个SQL Server数据库表,如下所示 -
id | consignee | shipper | lss | cm1 | month
1 | hnm | A | 101 | 25 | Jan
2 | hnm | B | 102 | 35 | Jan
3 | hnm | A | 103 | 45 | Feb
我希望得到如下的输出 -
consignee | shipper | Jan | Feb |
| cm1 | lss | cm1 | lss|
hnm | A | 25 | 1 | 45 | 1 |
hnm | B | 35 | 1 | 0 | 0 |
此处COUNT函数应用于lss并应用于cm1上的SUM。我甚至不知道这是否可能在SQL Server查询中。从我通过搜索看到的是人们将行转换为列或1个X轴,1个Y轴和1个Z轴查询,但没有这样的。我可以使用pivot轻松地在Excel上执行此操作,但我需要从此格式的数据库中获取此数据并导出到Excel文件。
注意:我正在使用ASP .NET应用程序,我正在使用C#和OleDB。
答案 0 :(得分:1)
是肯定的。有可能的。
SELECT consignee , shipper ,
jan_cm1 = MAX (CASE WHEN month = 'Jan' THEN cm1 END),
jan_lss = MAX (CASE WHEN month = 'Jan' THEN lss END),
feb_cm1 = MAX (CASE WHEN month = 'Feb' THEN cm1 END),
feb_lss = MAX (CASE WHEN month = 'Feb' THEN lss END)
FROM yourtable
GROUP BY consignee , shipper