列表考虑一下这个表:SQL命令检索嵌套在
Employees Segment Function
John Retail Sales
Peter Retail Sales
Lucas Retail Sales
Steve Retail Sales
Maria Retail Sales
我希望得到的名单,像这样:(别名第一列)
'Area' 'Employees'
Retail John,Lucas,Maria
Sales John,Lucas,Maria
要组装查询我有只有员工名单。所以条件应该是这样的:
WHERE Employees IN('John','Maria','Lucas').
我只有访问查询数据库。
我可以在一排安装的员工名单,像这样:
SELECT
Employees = Stuff(
(SELECT N', ' + Employees FROM table A WHERE Employees
IN('John','Maria','Lucas') FOR XML PATH(''),TYPE)
.value('text()[1]','nvarchar(max)'),1,2,N'');
,我还可以通过合并细分和功能类似这样的创建“区域”:
SELECT Segment 'Area' FROM table
WHERE Employees IN('John','Maria','Lucas')
UNION SELECT Function 'Area' FROM table
WHERE Employees IN('John','Maria','Lucas')
我会喜欢只是合并使用的东西作为UNION这两个选择,就像这样:
SELECT
Employees = Stuff(
(SELECT N', ' + Employees FROM table A WHERE Employees
IN('John','Maria','Lucas') FOR XML PATH(''),TYPE)
.value('text()[1]','nvarchar(max)'),1,2,N'')
UNION
SELECT Segment 'Area' FROM table
WHERE Employees IN('John','Maria','Lucas')
UNION SELECT Function 'Area' FROM table
WHERE Employees IN('John','Maria','Lucas')
结果出来了,如:
'Employees'
John,Maria,Lucas
Retail
Sales
也许我错过了关于UNION语法的一些细节,或者它并不像我期望的那么简单。
哪些DBMS你实际使用?你标记了sql server和mysql,但是你在你的问题中提到了PL/SQL(Oracle)。 –
另外,你需要定义“没有工作”。那是什么意思? –
我想你可能正在寻找GROUP_CONCAT – RiggsFolly