【发布时间】:2021-01-21 04:56:12
【问题描述】:
我想输出 Y 或 N。如果 cc.date1 = T.date 则为“Y”。或者如果cc.date1 < T.date 则为“N”。我不太确定如何在下面的查询中表达这一点,欢迎提出任何建议。 cte 是存储过程的更大查询块的一部分。我目前正在使用 SQL Server 2008 R2 (V10.50)。谢谢
WITH cte_new AS
(
SELECT CC.ID,
CC.col1,
CC.col2,
CC.col3,
ROW_NUMBER() OVER(PARTITION BY CC.ID ORDER BY CC.date1 DESC) AS row_num
FROM table1 AS CC
INNER JOIN #temp AS T
ON CC.ID = T.ID
WHERE CC.col1 = 'CNT'
AND CC.col2 = 'NEW'
AND CC.date1 = T.date
OR CC.date1 < T.date
)
SELECT *
INTO #NewOld
FROM cte_new
WHERE row_num = 1
【问题讨论】:
-
仅供参考,SQL Server 2008 (R2) 已于去年夏天终止;您现在已经不是开始考虑升级路径的时候了。
-
至于问题,你看过
CASEexpression吗? -
是的,这个月搬到 2016 年。我们落后了,但到达那里! :)
-
@Larnu 感谢您指出案例。我现在正在使用它
-
CASE WHEN cc.date1 = t.date THEN 'Y'....类似这样的事情
标签: sql tsql sql-server-2008-r2