我有一些项目在不同的日期/时间定期发布(I-UN)和浪费(W-WS)。我每次都会保留一个交易时间(W-WS减去I-UN),所以为了完成它,我需要在单独的列中使用I-UN Date和W-WS。
以下是我所拥有的:
ItemID Type Date
441455 I-UN 3/24/19 8:00
441455 W-WS 3/24/19 8:09
441455 I-UN 3/24/19 9:47
441455 W-WS 3/24/19 9:51
441455 I-UN 3/24/19 12:20
441455 W-WS 3/24/19 12:26
441455 I-UN 3/24/19 15:50
441455 W-WS 3/24/19 15:53
以下是我想要实现的目标:
ItemID I-UN Date W-WS Date
441455 3/24/19 8:00 3/24/19 8:09
441455 3/24/19 9:47 3/24/19 9:51
441455 3/24/19 12:20 3/24/19 12:26
441455 3/24/19 15:50 3/24/19 15:53
有没有办法可以查询以获得我想要的结果?对你的帮助表示感谢。谢谢!
表格自行连接,左边是I-UN
行,右边是TOP 1 W-WS
行,左边是Date
,左边是Date
。
作为自连接的替代,您可以在FROM..WHERE子句中选择I-UN
行,并使用子查询获取W-WS Date
。
您可以尝试对项目ID和按时间排序的row_number()
进行完全连接。
SELECT t1.itemid [ItemID],
t1.date [I-UN Date],
t2.date [W-WS Date]
FROM (SELECT itemid,
date,
row_number() OVER (ORDER BY date) r#
FROM elbat
WHERE type = 'I-UN') t1
FULL JOIN (SELECT itemid,
date,
row_number() OVER (ORDER BY date) r#
FROM elbat
WHERE type = 'W-WS') t2
ON t1.itemid = t2.itemid
AND t1.r# = t2.r#;
或者可能是内连接,如果你只想要两个时间都存在的对(或者如果你只想确保所有时间都用于其中一个,则为左连接或右连接)。