我需要编写一个动态返回列的查询。例如,我有一个带有列的表tbltest:
Id, Name, Type, Amount
1, Receipt, Cash 100
2, Receipt, Card 200
3, Receipt, Cheque 250
4, Receipt, Card 150
5, Receipt, Cash 100
6, Payment, Cash 300
7, Payment, Cheque 400
sql查询:
SELECT
Name,
SUM(CASE WHEN Type = 'Cash' THEN Amount ELSE 0 END) Cash,
SUM(CASE WHEN Type = 'Card' THEN Amount ELSE 0 END) Card,
SUM(CASE WHEN Type = 'Cheque' THEN Amount ELSE 0 END) Cheque
FROM tblTest
GROUP BY
Name;
它还给了我,
以上结果是根据我的要求,但在我的情况下,类型现金,卡,支票等,在上述数据不是预定义的,这可能是动态的,那么我如何管理它,请帮助我建立动态列sql的。
提前谢谢。。
2条答案
按热度按时间pu82cl6c1#
你需要使用动态轴心
动态创建透视查询。
主要步骤如下
声明变量
@sql
带着你的SUM
功能和CASW WHEN
表达使用
CONCAT
结合你的SUM
功能和CASW WHEN
表达式字符串和mainselect
字符串。使用
EXECUTE
函数动态执行sql。像这样。
结果
sqlfiddle公司
lzfw57am2#
嘿,
希望我没弄错。