我的数据如下:
PhoneNumber | Department
9495551234 | Sales
9495554598 | Sales
9494582045 | Sales
9495639842 | Sales
9496573952 | Accounting
9498730956 | Marketing
9498346620 | Marketing
我希望数据看起来像这样:
Sales | Accounting | Marketing
9495551234 | 9496573952 | 9498730956
9495554598 | <blank> | 9498346620
9494582045 | <blank> | <blank>
9495639842 | <blank> | <blank>
这可能是用PIVOT完成的吗?我在这里留下任何信息还是这么直接?
答案 0 :(得分:1)
您可以使用PIVOT
<强> SqlFiddleDemo 强>
CREATE TABLE tab(PhoneNumber NVARCHAR(20), Department NVARCHAR(100));
INSERT INTO tab(PhoneNumber, Department)
VALUES
('9495551234' , 'Sales'),
('9495554598' , 'Sales'),
('9494582045' , 'Sales'),
('9495639842' , 'Sales'),
('9496573952' , 'Accounting'),
('9498730956' , 'Marketing'),
('9498346620' , 'Marketing');
查询:
;WITH cte AS
( SELECT
PhoneNumber,
Department,
[rn] = ROW_NUMBER() OVER(PARTITION BY Department ORDER BY (SELECT 1))
FROM tab
)
SELECT
[Sales] = IIF(Sales IS NOT NULL, Sales, '<blank>')
,[Accounting] = IIF(Accounting IS NOT NULL, Accounting, '<blank>')
,[Marketing] = IIF(Marketing IS NOT NULL, Marketing, '<blank>')
FROM cte
PIVOT
(
MAX(PhoneNumber)
FOR Department IN (Sales, Accounting, Marketing)
) AS p;