所以,我有一个包含staff
,associate
和Matter type
列的表格(总是设置为'点亮'或者' PSD& #39;。)
当type field =' Lit'我需要在Staff语句中包含Staff字段作为staff字段。当类型字段设置为' PSD'我需要将关联字段包含在select语句中的staff字段中。
我知道我可以将它作为两个单独的查询来完成,但我无法弄清楚如何将这两个查询合并为一个查询 - 这是一个简单的答案,但在一段时间内无法弄清楚,我只是没有提出答案。
想法?
答案 0 :(得分:3)
SELECT
CASE WHEN
[MatterType] = 'Lit'
THEN
[Staff]
ELSE
[Associate]
END AS [NewStaff]
FROM
MyTable;
这在SELECT列表中使用内联案例条件。
答案 1 :(得分:3)
要合并两个具有相同列数的查询的结果,您可以使用UNION ALL
或UNION
。最好是因为较少的开销而联合所有。
SELECT staff AS staff ,
mattertype
FROM my_table
WHERE mattertype = 'Lit'
UNION ALL
SELECT associate AS staff ,
mattertype
FROM my_table
WHERE mattertype = 'PSD'
在您的情况下,我会说使用CASE
更好:
SELECT CASE WHEN mattertype = 'Lit' THEN staff
ELSE associate
END AS staff
,mattertype
FROM my_table
答案 2 :(得分:2)
如果我理解你的问题,你需要员工或员工作为一个名为员工的专栏,取决于物质的价值。如果这是cas,您可以使用条件case ... when
语句来选择适当的列。像这样:
select matter, case when matter = 'Lit' then staff else associate end as staff from table
当你声明问题必须是Lit或PSD时,你只需要检查它是否是其中一个值,否则它必须是另一个(尽管为了清楚起见你可以明确检查)。
答案 3 :(得分:0)
其他答案涵盖了普通&实用,所以这里有一个有时有用的变化。如果staff
列在[Matter type] = 'PSD'
时为空,那么这将起作用:
SELECT COALESCE(staff,associate) AS staff
FROM tablename
;