SQL枢轴MIN(COUNT(
-
16-09-2019 - |
题
我有在它PIVOT一个复杂的MS SQL 2005查询...
我有这样的数据:
Data ( clients left join visits ):
ClientID VisitID ServiceID
1 34 5
1 36 2
1 36 5
1 45 2
1 48 2
1 60 2
2 44 1
3 48 2
3 78 3
3 79 2
和我需要的是这样的:
ID [1] [2] [3] [4] [5]
1 0 1 0 0 1
2 1 0 0 0 0
3 0 1 1 0 0
我使用的SQL查询是这样的:
select * from
(select clients.ClientID, clients.serviceID FROM clients left join visits on visit.cliendid=clients.clientid ) e
pivot ( COUNT(serviceID) for serviceID in ([1],[2],...,[54]) ) p
但这个SQL查询不会做我想做的,而是做这个的:
ID [1] [2] [3] [4] [5]
1 0 4 0 0 2
2 1 0 0 0 0
3 0 2 1 0 0
我需要所有的列中的数据为0或1,如在,0从未使用该服务,1已用这种服务... 我该怎么做呢?
这将是真棒如果我可以做枢轴(Math.MIN(COUNT(服务ID)为,0)...或者,如果我能做到(CASE(COUNT(服务ID)> 0)THEN ELSE 1 0 .. 。 但它不会让我。
解决方案
SELECT *
FROM (
SELECT DISTINCT clients.ClientID, clients.serviceID
FROM clients
) e
PIVOT (
COUNT(serviceID)
FOR serviceID in ([1],[2])
) p
不隶属于 StackOverflow