我有几个项目要在不同的日期/时间定期发布(I-UN)和浪费(W-WS)。我要每次都保留一个事务时间(W-WS减去I-UN),因此要完成该任务,我需要在单独的列中输入I-UN日期和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
有没有一种方法可以查询以获得所需的结果?对你的帮助表示感谢。谢谢!
答案 0 :(得分:0)
对表进行自连接,左侧为I-UN
行,右侧为TOP 1 W-WS
行,其中Date
为右侧>左侧的Date
。
作为自联接的替代方法,您只需在FROM..WHERE子句中选择I-UN
行,然后通过子查询获取W-WS Date
。
答案 1 :(得分:0)
您可以尝试按时间顺序对商品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#;
或者,如果您只希望同时存在两个对的对,则可能是一个内部联接(或者,如果只想确保其中的所有时间都被占用,则为左联接或右联接)。