2016-07-28 123 views
0

我需要一些幫助來將附加列中的'comment'和帶有where子句的select語句一起添加。選擇帶有where子句的語句並在另一列中添加'comment'

當前代碼

首先聲明

SELECT * FROM [Table] WHERE [Dep]  = 'M'  AND 
          ([Join M] <> [Join B] OR 
          [Resign M] <> [Resign Date Beneficiary]) 
GO 

第二條語句

SELECT * FROM [Table] WHERE [Join B] < [Resign B] AND 
          ([Join M] > [Join B] OR 
          [Resign M] < [Resign B]) 
GO 

這是兩個不同的select語句,但是我想兩個輸出組合成一張桌子。

錯誤的代碼 - (例子來解釋)

首先聲明

SELECT * FROM [Table] WHERE [Dep]  = 'M'  AND 
          ([Join M] <> [Join B] OR 
          [Resign M] <> [Resign Date Beneficiary]) 
SET AS [Comment] = 'Main' 
GO 

第二條語句

SELECT * FROM [Table] WHERE [Join B] < [Resign B] AND 
          ([Join M] > [Join B] OR 
          [Resign M] < [Resign B]) 
SET AS [Comment] = 'Date' 
GO 

的要求是一個額外的列添加到輸出並添加'評論'在現場,也可以將兩個輸出結合在一個表格中。

輸出

首先聲明輸出

[Number] |[Dep] |[Join M] |[Join B] |[Resign M ]|[Resign B] 
10003 |M  |20160101 |20160201 |20160301 |20160301 
10004 |M  |20160101 |20160201 |20160301 |20160401 

第二條語句輸出

[Number] |[Dep] |[Join M] |[Join B] |[Resign M ]|[Resign B] 
10000 |M  |20160201 |20160201 |20160131 |20160430 
10002 |M  |20160501 |20160430 |20160430 |20160430 

所需的輸出

[Number] |[Dep] |[Join M] |[Join B] |[Resign M ]|[Resign B]|[Comment] 
10000 |M  |20160201 |20160201 |20160131 |20160430 |'Date' 
10002 |M  |20160501 |20160430 |20160430 |20160430 |'Date' 
10003 |M  |20160101 |20160201 |20160301 |20160301 |'Main' 
10003 |M  |20160101 |20160201 |20160301 |20160401 |'Main' 
+0

謝謝你兩個答案之間的聯盟,他們都是相同的,我需要的準確輸出。謝謝。 –

回答

2

使用UNION ALL多個(兼容)結果集相結合,並且可以將SELECT子句中添加額外的表達式

SELECT [Number],[Dep],[Join M],[Join B],[Resign M ],[Resign B],'Main' as Comment 
FROM [Table] WHERE [Dep]  = 'M'  AND 
          ([Join M] <> [Join B] OR 
          [Resign M] <> [Resign Date Beneficiary]) 
UNION ALL 

SELECT [Number],[Dep],[Join M],[Join B],[Resign M ],[Resign B],'Date' as Comment 
FROM [Table] WHERE [Join B] < [Resign B] AND 
          ([Join M] > [Join B] OR 
          [Resign M] < [Resign B]) 

或者,如果這些行代表的Table的全部內容只是想和你分類行作爲要麼MainDate,你可以使用一個CASE表達:

SELECT [Number],[Dep],[Join M],[Join B],[Resign M ],[Resign B], 
    CASE WHEN [Dep]  = 'M'  AND 
      ([Join M] <> [Join B] OR 
      [Resign M] <> [Resign Date Beneficiary]) 
    THEN 'Main' 
    ELSE 'Date' END as Comment 
FROM [Table] 
1

看來你只是想所有的查詢

SELECT 
     [Number] 
    , [Dep] 
    , [Join M] 
    , [Join B] 
    , [Resign M ] 
    , [Resign B] 
    , 'Main' AS comment 
FROM [Table] 
WHERE [Dep] = 'M' 
     AND ([Join M] <> [Join B] 
     OR [Resign M] <> [Resign Date Beneficiary] 
    ) 

UNION ALL 

     SELECT 
      [Number] 
      , [Dep] 
      , [Join M] 
      , [Join B] 
      , [Resign M ] 
      , [Resign B] 
      , 'Date' AS comment 
     FROM [Table] 
     WHERE [Join B] < [Resign B] 
      AND ([Join M] > [Join B] 
       OR [Resign M] < [Resign B] 
       ) 
;