在SO的帮助下,我今天一直在学习一些SQL。
我创建了一个这样的视图:
CREATE VIEW RDMAVWSANDBOX.VwNIM001usersAndDlCount AS
SELECT VwNIMEventFct.NIM_USER_ID, COUNT(VwNIMEventFct.NIM_EVENT_TYPE_ID) AS DownloadCount
FROM RDMAVWSANDBOX.VwNIMEventFct
WHERE NIM_EVENT_TYPE_ID = 884
GROUP BY NIM_USER_ID
这很好。
除了NIM_EVENT_TYPE_ID
列有5种变体:880,881,883,884,885
。
在上面的查询中,我创建了一个计数为884的视图。结果如下:
NIM_USER_ID | DownloadCount
因为884表示下载。
但如果我想创建一个这样的视图:
NIM_USER_ID | DownloadCount(based884) | SomeOtherEventCount(based880) | SomeOtherEventCount1(Bases 883) | Etc
有没有办法在一个视图中创建并创建所有内容?
换句话说,我希望每个NIM_USER_ID
的每个实例的计数为880-885
答案 0 :(得分:1)
CREATE VIEW RDMAVWSANDBOX.VwNIM001usersAndDlCount AS
SELECT VwNIMEventFct.NIM_USER_ID
,SUM(CASE WHEN NIM_EVENT_TYPE_ID = 884 then 1 else 0 end) AS DownloadCount
,SUM(CASE WHEN NIM_EVENT_TYPE_ID = 885 then 1 else 0 end) AS Something
,SUM(CASE WHEN NIM_EVENT_TYPE_ID = 886 then 1 else 0 end) AS Something
,SUM(CASE WHEN NIM_EVENT_TYPE_ID = 887 then 1 else 0 end) AS Something
FROM RDMAVWSANDBOX.VwNIMEventFct
GROUP BY NIM_USER_ID
这个怎么样?
答案 1 :(得分:1)
也许这就是你想要的?
CREATE VIEW RDMAVWSANDBOX.VwNIM001usersAndDlCount AS
SELECT
VwNIMEventFct.NIM_USER_ID,
SUM(CASE WHEN NIM_EVENT_TYPE_ID = 880 THEN 1 ELSE 0 END) AS [Count for 880],
SUM(CASE WHEN NIM_EVENT_TYPE_ID = 881 THEN 1 ELSE 0 END) AS [Count for 881],
SUM(CASE WHEN NIM_EVENT_TYPE_ID = 882 THEN 1 ELSE 0 END) AS [Count for 882],
SUM(CASE WHEN NIM_EVENT_TYPE_ID = 883 THEN 1 ELSE 0 END) AS [Count for 883],
SUM(CASE WHEN NIM_EVENT_TYPE_ID = 884 THEN 1 ELSE 0 END) AS [Count for 884],
SUM(CASE WHEN NIM_EVENT_TYPE_ID = 885 THEN 1 ELSE 0 END) AS [Count for 885]
FROM RDMAVWSANDBOX.VwNIMEventFct
GROUP BY NIM_USER_ID
您必须更改列名称和显示的顺序以满足您的需要,但该示例应该为您提供一个想法。