Select 带有 where 子句的语句并在另一列中添加 'comment'

Select statement with a where clause and add 'comment' in another column

我需要一些帮助来在附加列中添加“注释”以及带有 where 子句的 select 语句。

当前代码

第一个声明

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 语句,但是我想将两个输出合并为一个 table。

错误代码-(举例说明)

第一个声明

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

要求是在输出中添加一个额外的列并在字段中添加一个 'comment',同时将两个输出合并为一个 table。

输出

第一个语句输出

 [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'

使用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]

似乎您只想要查询之间的所有联合

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]
                )
;