我有很长的SELECT
查询,但我在这里粘贴了相关部分。在另一个Case语句中使用Case语句的结果
我需要使用我的CASE
语句的结果在另一个CASE
语句中使用。我在SQL Server中这样做。
非常感谢您的帮助。
SELECT
CompanyContact.Name AS CompanyName,
CASE
WHEN SUBSTRING(HeadLease.TenantBreakNotice, LEN(HeadLease.TenantBreakNotice), 1) = 'M'
THEN CONVERT(VARCHAR(10), DATEADD(DD, -365/(12/SUBSTRING(HeadLease.TenantBreakNotice, 1, LEN(HeadLease.TenantBreakNotice) - 1)), HeadLease.TenantBreakDate), 103)
WHEN SUBSTRING(HeadLease.TenantBreakNotice, LEN(HeadLease.TenantBreakNotice), 1) = 'Y'
THEN CONVERT(VARCHAR(10), DATEADD(DD, -365 * (SUBSTRING(HeadLease.TenantBreakNotice, 1, LEN(HeadLease.TenantBreakNotice) - 1)), HeadLease.TenantBreakDate), 103)
ELSE HeadLease.TenantBreakNotice
END AS [TenantBreakNotice], <-- I need this to be used in the case statement below.
CASE
WHEN [TenantBreakNotice] < CONVERT(varchar(10), getdate(), 103)
THEN 'Expiry'
WHEN [TenantBreakNotice] IS NULL
THEN 'Expiry'
ELSE 'Break'
END AS [LeaseEventType]
FROM
HeadLease
那是不可能的。如果将其放入子查询中,则只能访问计算列。 –
不可能通过某种方式将派生字段(从第一个case语句)分配给可以在第二个Case语句中使用的变量来避免子查询? – Learner
另请注意,T-SQL中的CASE是**表达式**(不是*语句*) - 表达式(如'a + b')返回单个原子值 –