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 はこのサービスを使用したことがあります... どうすればよいですか?
pivot ( Math.MIN ( COUNT(serviceID), 0 ) for ... または if I could do ( CASE (COUNT(serviceID) > 0 ) THEN 1 ELSE 0 for ... を実行できれば最高ですが、させてくれません。