我有以下简单查询(sql server 2012)
SELECT T.[taskId], T.[sectionId], T.[DateAdded]
FROM [TASK] AS T
WHERE (T.[deleted] = 0)
ORDER BY T.[DateAdded]
我想要做的是创建一个名为type
的计算列,如果SectionId
为空,则为1。如果不是null
,那么对于名为foreign key
的{{1}},这将包含table
。组织有一个名为type的列。如果组织中连接行的类型为6,则我的计算类型值应为2,否则为3。
我猜这个Organisation
对于这个来说是理想的,但是我不确定如何去做。
答案 0 :(得分:2)
要投影派生列,请在组织表中添加联接,并根据各种值派生新列:
SELECT T.[taskId], T.[sectionId], T.[DateAdded],
CASE
WHEN SectionId IS NULL THEN 1
WHEN o.[type] = 6 THEN 2
ELSE 3
END AS [type]
FROM [TASK] AS T
-- Applicable join condition goes here ...
LEFT OUTER JOIN Organisation o ON t.TaskID = o.TaskID
WHERE (T.[deleted] = 0)
ORDER BY T.[DateAdded]
<德尔>
如果你**字面上想要一个计算列,它看起来像这样:
ALTER TABLE TASK ADD [Type] AS
案件
当SectionId为NULL时,则为1
WHEN(SELECT [type] FROM Organization WHERE ... JOIN KEY)= 6那么2
ELSE 3
结束;
德尔>