我有很長的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')返回單個原子值 –