T-SQL Case语句,其中值来自连接表

时间:2014-05-02 08:20:21

标签: sql sql-server tsql case

我有以下简单查询(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对于这个来说是理想的,但是我不确定如何去做。

1 个答案:

答案 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        结束;