首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询中的派生字段

SQL查询中的派生字段
EN

Stack Overflow用户
提问于 2014-11-12 11:13:08
回答 1查看 275关注 0票数 0

使用Server 2008 (或者可能是2012年),我有一个带有UserID、Date和Action字段的“activity”表,我希望计算每个用户每天执行每个操作的次数。不幸的是,“action”只是一个文本字段,有时它包含的不仅仅是基本的操作。所以我想做这样的事情:

代码语言:javascript
复制
SELECT UserID,
       Cast([Timestamp] AS DATE)                         AS DateField,
       Count(Action LIKE '%Logged In%')                  AS LoggedIn,
       Count(Action LIKE '%Requested Planning Data%')    AS Planning,
       Count(Action LIKE '%Requested Time Series Data%') AS TimeSeries,
       Count(Action LIKE '%Requested Analytical Data%')  AS Analytical
FROM   Activity
ORDER  BY UserID,
          DateField 

结果应该是这样的:

代码语言:javascript
复制
UserID  DateField   LoggedIn  Planning  TimeSeries  Analytical
------  ---------   --------  --------  ----------  ----------
1       01-11-2014  1         1         0           2
1       02-11-2014  3         7         2           5
2       01-11-2014  1         8         0           0
...

但我不知道如何导出“计数”列。这有可能吗?原始表看起来如下所示:

代码语言:javascript
复制
UserID  Timestamp            Action
1       01-11-2014 09:00:15  User Logged In
1       01-11-2014 09:01:15  User Requested Planning Data for 2 sites
1       01-11-2014 09:07:15  User Requested Analytical Data for 1 sites
1       01-11-2014 09:25:15  User Requested Analytical Data for 8 sites
1       02-11-2014 09:03:15  User Logged In
1       02-11-2014 09:07:15  User Logged In
...

-阿利斯泰尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-12 11:16:42

您需要使用conditional aggregate。尝尝这个。

代码语言:javascript
复制
SELECT UserID, CAST([Timestamp] AS date) AS DateField,
   COUNT(CASE WHEN Action LIKE '%Logged In%' THEN 1 END) 
       AS LoggedIn,
   COUNT(CASE WHEN Action LIKE '%Requested Planning Data%' THEN 1 END) 
       AS Planning,
   COUNT(CASE WHEN Action LIKE '%Requested Time Series Data%' THEN 1 END) 
       AS TimeSeries,
   COUNT(CASE WHEN Action LIKE '%Requested Analytical Data%' THEN 1 END) 
       AS Analytical
FROM Activity
ORDER BY UserID, CAST([Timestamp] AS date)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26885576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档