【发布时间】:2013-12-26 14:33:28
【问题描述】:
我试图在案例陈述中使用 4 个不同的列(Case_Close、Case_Open、Case_Comment、Case_Retrieve) 将所有内容放在单个列中,不知道该怎么做。 我到现在为止是:
select report_id,
user_id,
action_type,
action_start,
action_end ,
CASE WHEN ACTION_END is null THEN case ACTION_TYPE when 'CLOSE' then ACTION_START end END as Case_Close,
CASE WHEN ACTION_END is null THEN case ACTION_TYPE when 'OPEN' then GETDATE() end END as Case_Open,
CASE WHEN ACTION_END is null THEN case ACTION_TYPE when 'COMMENT' then GETDATE() end END as Case_Comment,
CASE WHEN ACTION_END is null THEN case ACTION_TYPE when 'RETRIEVE' then GETDATE() end END as Case_Retrieve
from Table1
order by report_id
看起来像这样:
report_id user_id action_type action_start action_end Case_Close Case_Open Case_Comment Case_Retrieve
-------------------- ----------- ----------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- -----------------------
20122511549-621 621 CLOSE 2012-02-19 10:53:28.000 NULL 2012-02-19 10:53:28.000 NULL NULL NULL
20122511549-621 621 OPEN 2012-02-05 11:05:49.000 2012-02-19 10:53:28.000 NULL NULL NULL NULL
20132121098-621 621 OPEN 2013-02-12 10:09:08.807 2013-02-12 11:16:17.167 NULL NULL NULL NULL
20132121098-621 621 COMMENT 2013-02-12 11:16:17.167 NULL NULL NULL 2013-12-26 14:55:12.017 NULL
201321814390-621 621 OPEN 2013-02-18 14:39:00.157 NULL NULL 2013-12-26 14:55:12.017 NULL NULL
201322010148-707 707 OPEN 2013-02-20 10:01:48.693 2013-10-29 13:22:05.017 NULL NULL NULL NULL
201322010148-707 707 RETRIEVE 2013-10-29 13:22:05.017 NULL NULL NULL NULL 2013-12-26 14:55:12.017
2013222142012-621 621 OPEN 2013-02-22 14:20:12.327 NULL NULL 2013-12-26 14:55:12.017 NULL NULL
2013225102516-707 707 OPEN 2013-02-25 10:25:16.790 2013-02-25 10:47:05.890 NULL NULL NULL NULL
2013225102516-707 707 OPEN 2013-02-04 13:48:38.293 2013-10-28 13:22:09.110 NULL NULL NULL NULL
201324134838-707 707 RETRIEVE 2013-10-28 13:22:09.110 NULL NULL NULL NULL 2013-12-26 14:55:12.017
我需要的是喜欢这个:
report_id user_id action_type action_start action_end Column_Action_End
-------------------- ----------- ----------- ----------------------- ----------------------- -----------------------
20122511549-621 621 CLOSE 2012-02-19 10:53:28.000 NULL 2012-02-19 10:53:28.000
20122511549-621 621 OPEN 2012-02-05 11:05:49.000 2012-02-19 10:53:28.000 NULL
20132121098-621 621 OPEN 2013-02-12 10:09:08.807 2013-02-12 11:16:17.167 NULL
20132121098-621 621 COMMENT 2013-02-12 11:16:17.167 NULL 2013-12-26 14:55:12.017
201321814390-621 621 OPEN 2013-02-18 14:39:00.157 NULL 2013-12-26 14:55:12.017
201322010148-707 707 OPEN 2013-02-20 10:01:48.693 2013-10-29 13:22:05.017 NULL
201322010148-707 707 RETRIEVE 2013-10-29 13:22:05.017 NULL 2013-12-26 14:55:12.017
2013222142012-621 621 OPEN 2013-02-22 14:20:12.327 NULL 2013-12-26 14:55:12.017
2013225102516-707 707 OPEN 2013-02-25 10:25:16.790 2013-02-25 10:47:05.890 NULL
2013225102516-707 707 OPEN 2013-02-04 13:48:38.293 2013-10-28 13:22:09.110 NULL
201324134838-707 707 RETRIEVE 2013-10-28 13:22:09.110 NULL 2013-12-26 14:55:12.017
如果有人可以帮助我,我将不胜感激?
【问题讨论】:
-
您是否尝试在“action_end”为空时填写?您可以在同一列中执行此操作...使用 coalesce 或 isnull。
-
谢谢你们所有的人,我尝试了你们所有的答案并为我工作:)
标签: sql-server select case multiple-columns