我的表格包含ID
,EmployeeNameHistory
,CompanyWorked
列
CREATE TABLE EMp
(
ID int not null,
EmployeeNameHistory varchar(200) not null,
CompanyWorked varchar(200) not null
)
INSERT INTO EMP (1, 'Jill Joane', 'Oracle corp')
INSERT INTO EMP (1, 'Jill Keane', 'Oracle corp')
INSERT INTO EMP (1, 'Jill Keane', 'Infosys')
INSERT INTO EMP (2, 'Anne Smith', 'Oracle corp')
INSERT INTO EMP (2, 'Anne Jordan', 'Infosys')
我希望输出只能按ID
进行转动1 (Jill Joane Oracle corp) (Jill Keane Oracle corp) (Jill Keane Infosys)
2 (Anne Smith Oracle corp) (Anne Jordan Infosys)
第一列是ID
,第二列是'(' + EmployeeNameHistory + CompanyWorked + ')'
我该怎么做?
由于 MR
答案 0 :(得分:1)
SELECT e.ID
, STUFF(( SELECT ' (' + t.EmployeeNameHistory + ' ' + t.CompanyWorked + ')'
FROM EMP t
WHERE t.ID = e.ID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,1,'') AS [Data]
FROM EMP e
GROUP BY e.ID
╔════╦════════════════════════════════════════════════════════════════════════╗
║ ID ║ Data ║
╠════╬════════════════════════════════════════════════════════════════════════╣
║ 1 ║ (Jill Joane Oracle corp) (Jill Keane Oracle corp) (Jill Keane Infosys) ║
║ 2 ║ (Anne Smith Oracle corp) (Anne Jordan Infosys) ║
╚════╩════════════════════════════════════════════════════════════════════════╝
答案 1 :(得分:1)
使用不同的ID列表操作的另一个选项
Select A.ID
,History = (Select Stuff((Select ' (' +EmployeeNameHistory +' ' + CompanyWorked +')' From Emp Where ID=A.ID For XML Path ('')),1,1,'') )
From (Select Distinct ID From Emp ) A
返回
ID History
1 (Jill Joane Oracle corp) (Jill Keane Oracle corp) (Jill Keane Infosys)
2 (Anne Smith Oracle corp) (Anne Jordan Infosys)
答案 2 :(得分:0)
这不是Pivot。您需要通过对ID
进行分组来连接列DataCREATE TABLE #EMp (ID INT NOT NULL, EmployeeNameHistory VARCHAR(200) NOT NULL, CompanyWorked VARCHAR(200) NOT NULL)
INSERT INTO #EMp
VALUES (1, 'Jill Joane', 'Oracle corp')
INSERT INTO #EMp
VALUES (1, 'Jill Keane', 'Oracle corp')
INSERT INTO #EMp
VALUES (1, 'Jill Keane', 'Infosys')
INSERT INTO #EMp
VALUES (2, 'Anne Smith', 'Oracle corp')
INSERT INTO #EMp
VALUES (2, 'Anne Jordan', 'Infosys')
--Here your query goes
SELECT *
FROM #EMp
SELECT DISTINCT ID, (
SELECT ' ( ' + EmployeeNameHistory + '' + CompanyWorked + ')'
FROM #EMP E2
WHERE E1.ID = E2.ID
FOR XML PATH('')
) AS EMP_COMP
FROM #EMP E1