尝试使用Pivot操作某些SQL,但我需要关注的是文本,我不能让它工作。
customerID appointment appointmentNumber treatment
9 2014-01-09 09:30:00.000 1 Osteo F 45
9 2014-01-20 09:00:00.000 2 Osteo F 45
9 2014-01-30 09:30:00.000 3 Osteo F 45
9 2014-02-10 09:00:00.000 4 Osteo F 45
我需要的是改变列" appointmentNumber"进入列标题,使用"处理"如下所示...
customerID 1 2 3 4 etc...
我一直在字符串上使用Pivot表来表示过去的数字(总和,计数),而不是字符串的数字,所以我有点迷失。
我查看了SQL Pivot with String,但似乎无法将此应用于我自己的代码。
有什么想法吗?
答案 0 :(得分:1)
您可以选择字符串列的最大/最小聚合函数。在这种情况下,我假设为appointmentNumber,customerId是唯一的,因此除了获取第一个值之外,聚合函数并没有真正做任何事情。
select
*
from
table t
pivot (
max(treatment)
for appointmentNumber in ([1],[2],[3],[4],[5])
) p
答案 1 :(得分:0)
您可以对max()
使用条件聚合:
select customerId,
max(case when appointmentnumber = 1 then treatement end) as an_1,
max(case when appointmentnumber = 2 then treatement end) as an_2,
max(case when appointmentnumber = 3 then treatement end) as an_3,
max(case when appointmentnumber = 4 then treatement end) as an_4,
max(case when appointmentnumber = 5 then treatement end) as an_5
from table t
group by customerid;
如果您愿意,也可以使用pivot
执行此操作。 max()
可以正常使用字符串变量。