CREATE TABLE #T1(actID INT,actAdopt VARCHAR(20))INSERT INTO #T1( actID, actAdopt )
SELECT 1,'A' UNION ALL
SELECT 2,'A' UNION ALL
SELECT 1,'B' UNION ALL
SELECT 3,'C' UNION ALL
SELECT 4,'C' UNION ALL
SELECT 4,'A'现在需要生成下列格式的数据
1 A、B
2 A
3 C
4 C、A先谢
SELECT 1,'A' UNION ALL
SELECT 2,'A' UNION ALL
SELECT 1,'B' UNION ALL
SELECT 3,'C' UNION ALL
SELECT 4,'C' UNION ALL
SELECT 4,'A'现在需要生成下列格式的数据
1 A、B
2 A
3 C
4 C、A先谢
stuff((select '、'+actAdopt from #T1 where actID=t.actID for xml path('')),1,1,'')
from #T1 t
group by actID
select actID,stuff((select actAdopt + ',' from tb where actID = t.actID for xml path('')),1,1,'') as actAdopt
from tb t
group by actID
列出所有在中国和美国的不同的雇员名:SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
结果
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill 注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。
UNION ALL
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。SQL Statement 1
UNION ALL
SQL Statement 2
使用 UNION ALL 命令
实例:
列出在中国和美国的所有的雇员:SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA
结果
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill
下面的例子中使用的原始表:
Employees_China:
E_ID E_Name
01 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming Employees_USA:
E_ID E_Name
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill
from tb t
group by actID