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
的全部内容,而您只想将行分类为 Main
或 Date
,您可以使用 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]
)
;
我需要一些帮助来在附加列中添加“注释”以及带有 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
的全部内容,而您只想将行分类为 Main
或 Date
,您可以使用 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]
)
;