[英]In my date time value I want to use regex to strip out the slash and colon from time and replace it with underscore
[英]I want to replace a date value per employee
由於沒有列出任何列,我認為我們將不得不使用排名 function 然后使用查詢。 我沒有測試類似下面的查詢應該可以工作。請關注我正在使用的排名 function 並將 1 添加到第二個查詢。
CREATE TABLE foo1
(
APPLYDATE datetime,
STARTDTM datetime,
ENDDTM datetime,
PERSONNUM int,
STARTREASON varchar(100),
ENDREASON varchar(100)
)
select getdate()
INSERT INTO foo1
VALUES ('2020-04-23 00:00:00.000','2020-04-23 06:30:47.223','2020-04-23 10:10:47.223',204901477,'newshift','out')
INSERT INTO foo1
VALUES ('2020-04-23 00:00:00.000','2020-04-23 21:45:47.223','2020-04-23 21:45:47.223',204901477,'newshift','missedout')
INSERT INTO foo1
VALUES ('2020-04-23 00:00:00.000','2020-04-23 10:10:47.223','2020-04-23 12:15:47.223',204901477,'newshift','out')
INSERT INTO foo1
VALUES ('2020-04-24 00:00:00.000','2020-04-24 06:30:47.223','2020-04-24 10:10:47.223',204901478,'newshift','out')
INSERT INTO foo1
VALUES ('2020-04-24 00:00:00.000','2020-04-24 21:45:47.223','2020-04-24 21:45:47.223',204901478,'newshift','missedout')
INSERT INTO foo1
VALUES ('2020-04-24 00:00:00.000','2020-04-24 10:10:47.223','2020-04-24 12:15:47.223',204901478,'newshift','out')
SELECT
aa.PERSONNUM,
ENDDTM = CASE
WHEN aa.ENDREASON = 'missedout' THEN bb.ENDDTM
ELSE aa.ENDDTM
END
FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY PERSONNUM ORDER BY PERSONNUM) AS id1,
*
FROM
foo1) aa
JOIN
(SELECT
ROW_NUMBER() OVER (PARTITION BY PERSONNUM ORDER BY PERSONNUM) + 1 AS id2,
*
FROM
foo1) bb ON aa.id1 = bb.id2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.