[英]How to select next date from table in teradata
I have table containing following info 我有包含以下信息的表
Quarter_END_DATE | Flag
2014/31/03 | N
2014/30/06 | Y
2014/30/09 | N
2014/31/12 | N
and so on.... 等等....
whenever query will be run it should update the next quarter flag to Y
and previous to N
每当运行查询时,都应将下一个四分之一
flag to Y
更新flag to Y
,将previous to N
四分之一flag to Y
更新previous to N
Please provide the solution to implement this. 请提供实施此解决方案。
Update next quarter's flag to Y
(assume there is only one Y
flag in the table): 将下一个季度的标志更新为
Y
(假设表中只有一个Y
标志):
UPDATE [table_name] SET Flag = 'Y'
WHERE Quarter_END_DATE = DATEADD(day, 90, (
SELECT FIRST(Quarter_END_DATE)
FROM [table_name]
WHERE Flag = 'Y'));
update previous quarter's flag to N
: 将上一季度的标志更新为
N
:
UPDATE [table_name] SET Flag = 'N'
WHERE Quarter_END_DATE = (
SELECT MIN(Quarter_END_DATE)
FROM [table_name]
WHERE Flag = 'Y'));
UPDATE tab
FROM
( SELECT Quarter_END_DATE, Flag
FROM tab
QUALIFY Flag = 'Y' -- current row with 'Y'
OR MAX(Flag) -- next row to be set to 'Y'
OVER (ORDER BY Quarter_END_DATE
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) = 'Y'
) AS src
SET Flag = CASE WHEN src.Flag = 'Y' THEN 'N' ELSE 'Y' END -- switch the flag
WHERE tab.Quarter_END_DATE = src.Quarter_END_DATE
AND tab.Flag = src.Flag
;
Best would be to state what dbms you are operating off of, however if you were doing this in mysql you could: 最好是指出要使用的是什么dbms,但是,如果在mysql中执行此操作,则可以:
update [table_name] set flag = 'N'
where flag = 'Y'
;
update [table_name] set flag = 'Y'
where quarter_end_date between now() and dateadd(now(), 90 DAYS);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.