【发布时间】:2015-08-19 15:13:46
【问题描述】:
我有下表:
date_trans | customerId
2015-02-01 | 12
2015-02-01 | 14
2015-02-01 | 13
2015-02-01 | 12
2015-02-02 | 13
2015-02-02 | 12
2015-02-02 | 13
2015-02-02 | 14
2015-02-02 | 14
我可以通过 GROUP BY 获得每天的总交易量:
SELECT date_trans, COUNT(*) as "Transactions" FROM theTable GROUP BY date_trans
date_trans | Transactions
2015-02-01 | 4
2015-02-02 | 5
但我无法从客户获得同一日期的部分数字:
date_trans | Transactions | "By 12" | "By 13" | "By 14"
2015-02-01 | 4 | 2 | 1 | 1
2015-02-02 | 5 | 1 | 2 | 2
我尝试在选择中进行分组,但它不起作用。
如何在 SQL 2014 中实现这一点?
谢谢
【问题讨论】:
-
如果没有“动态 sql”(编写 sql 的代码),您无法仅仅因为您的数据发生更改而获得不同数量的列。你可以做你所描述的事情,只要你总是并且只曾经想要为这三个特定客户 透视数据吗?或者,每个客户每天一行的结果集怎么样? (列名为
date_trans, customerId, transaction_count?) -
案例其实是静态客户,能动态做这个就好了。通过将 customer_id 添加到 GROUP BY 子句,可以实现每个客户每天一行的结果集。
标签: sql sql-server-2008