[英]Group By and Add Multiple Columns in SQL
嗨,我有一些问题。
这是我的示例数据库
001 | A | AC
001 | B | AC
002 | A | IN
002 | C | AC
003 | A | AC
笔记
Column 1 - Should be the column header
Column 2 - Should be the row header
Column 3 - Should be the data
我如何创建一个表格使其看起来像这样
- | 001 | 002 | 003
A | AC | IN | AC
B | AC | - | -
C | - | AC | -
静态枢轴 :
CREATE TABLE dbo.tbl (
col1 VARCHAR(20) NOT NULL,
col2 VARCHAR(20) NOT NULL,
col3 VARCHAR(20) NOT NULL
);
INSERT INTO dbo.tbl (col1, col2, col3)
VALUES ('001', 'A', 'AC'),
('001', 'B', 'AC'),
('002', 'A', 'IN'),
('002', 'C', 'AC'),
('003', 'A', 'AC');
SELECT col2 as [ ], [001], [002], [003]
FROM
(
SELECT col1, col2, col3
FROM tbl
) AS t1
PIVOT
(
MAX(col3)
FOR col1 IN ([001], [002], [003])
) AS t2
OUTPUT:
| 001 | 002 | 003
A | AC | IN | AC
B | AC | - | -
C | - | AC | -
编辑
刚才看到了需要动态枢纽的注释,您可以在这里:
DECLARE @cols AS NVARCHAR(MAX) = '',
@sql AS NVARCHAR(MAX)
SELECT @cols += QUOTENAME((col1)) + ','
FROM (
SELECT DISTINCT col1
FROM tbl
) a
SET @cols = LEFT(@cols, LEN(@cols) - 1)
SET @sql = 'SELECT *
FROM
(
SELECT col1, col2 as [ ], col3
FROM tbl
) x
PIVOT
(
MAX (col3)
FOR col1 IN (' + @cols + ')
) p'
EXEC sp_executesql @sql
OUTPUT:
| 001 | 002 | 003
A | AC | IN | AC
B | AC | - | -
C | - | AC | -
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.