【发布时间】:2018-06-13 20:33:53
【问题描述】:
您好,提前谢谢您,不确定我的标题是否足够,但希望具有所需输出的图像会有所帮助。本质上,eventtype=2的数据需要按ID分组。分组后,我仍然需要连接 Min(eventdate) 和 max(eventdate)。
第一张图片只是简单的选择语句(从 TABLE 中选择 *)。
任何帮助将不胜感激。
SELECT __DisplayName,
EventDate,
RIGHT(CONVERT(varchar(20),DATEADD(HOUR, -5 , EventDate), 100),7)
+ ' to ' +
RIGHT(CONVERT(varchar(20), DATEADD(HOUR, -5 , EndDate), 100),7),
location,
__EventType
FROM (SELECT *,
ROW_NUMBER() OVER
( PARTITION BY Id
ORDER BY eventdate asc
) AS ROWNUM
FROM TABLE
) x
WHERE ROWNUM = 1
AND __ApprovalStatus = 'Approved'
AND __EventType not in ('1','-1');
【问题讨论】:
-
为什么 ID 10 不在 11 月 7 日 - 11 月 8 日分组?你不能只用
min和max吗? -
您介意指定 RDBMS 吗?对我来说,它看起来像 SQL Server,但不能绝对确定。
-
如果你的第一张截图只是
select * from yourtable,你能不直接用select id, eventtitle, eventtime, location, eventtype, min(eventdate), max(eventdate) from yourtable group by id, eventtitle, eventtime, location, eventtype吗?如果您需要... -
好点。既然您说我如何按 ID 和 event type = -2 分组?这是我需要“截断”为一行的唯一事件类型。
-
嗨大卫,你是对的,这是 sql server。