【发布时间】:2015-05-18 05:23:28
【问题描述】:
我有两个非常相似的案例需要生成 SP。
在第一种情况下,我需要一个能够按活动数量返回列的 SQL(如果可能的话是动态的)。我必须按 ActivityId 创建列。
案例 1:
按日期、计数(ActivityId)
分组返回列:Activity1、Activity2、Activity3
表 1
╔════════════╦══════════════╗
║ ActivityId ║ ActivityName ║
╠════════════╬══════════════╣
║ 1 ║ Activity 1 ║
║ 2 ║ Activity 2 ║
║ 3 ║ Activity 3 ║
╚════════════╩══════════════╝
表 2
╔═══════════╦════════════╗
║ Date ║ ActivityId ║
╠═══════════╬════════════╣
║ 1/05/2015 ║ 1 ║
║ 1/05/2015 ║ 1 ║
║ 2/05/2015 ║ 2 ║
║ 3/05/2015 ║ 3 ║
╚═══════════╩════════════╝
查询结果
╔═══════════╦═══════════╦═══════════╦═══════════╗
║ Date ║ Activity1 ║ Activity2 ║ Activity3 ║
╠═══════════╬═══════════╬═══════════╬═══════════╣
║ 1/05/2015 ║ 2 ║ 0 ║ 0 ║
║ 2/05/2015 ║ 0 ║ 1 ║ 0 ║
║ 3/05/2015 ║ 0 ║ 0 ║ 1 ║
╚═══════════╩═══════════╩═══════════╩═══════════╝
案例 2:
在另一种情况下,我将不得不做完全相同的事情,但不是 活动将是一个月中的几天列表:
表 1
╔════════════╦═══════════╦═══════╗
║ Date ║ Account ║ Value ║
╠════════════╬═══════════╬═══════╣
║ 30/05/2015 ║ 1 ║ 10 ║
║ 27/05/2015 ║ 2 ║ 40 ║
╚════════════╩═══════════╩═══════╝
查询结果:
╔═════════╦════════════╦════════════╦════════════╦════════════╦═════════════════════╗
║ Account ║ 30/05/2015 ║ 29/05/2015 ║ 28/05/2015 ║ 27/05/2015 ║…each day in a month ║
╠═════════╬════════════╬════════════╬════════════╬════════════╬═════════════════════╣
║ 1 ║ 10 ║ 0 ║ 0 ║ 0 ║ ║
║ 2 ║ 0 ║ 0 ║ 0 ║ 40 ║ ║
╚═════════╩════════════╩════════════╩════════════╩════════════╩═════════════════════╝
【问题讨论】:
-
这很有帮助,我可以用数据透视表来做!
标签: sql sql-server tsql