在 SQL 服务器中旋转数据
Pivoting Data in SQL Server
我在 sql 服务器中有一个 table 使用此代码创建的
CREATE TABLE t3
(`NAME` varchar(20), `VALUE` varchar(17));
INSERT INTO t3
(`NAME`, `VALUE`)
VALUES
('Name_Screened', 'johny bravo'),
('Name_Screened', 'JOHNY CHAVO'),
('Match_Type', 'Direct'),
('Match_Type', 'Direct'),
('Disposition', 'Successful'),
('Disposition', 'Successful'),
('Compliance_Approval', 'Yes'),
('Compliance_Approval', 'Yes'),
('Supporting_Documents', 'Lexix Nexis Match'),
('Supporting_Documents', 'WORD NET MATCH');
我正在尝试使用代码
转换此数据
SELECT PVT.Match_Type, PVT.Name_Screened,PVT.Disposition,PVT.Compliance_Approval,PVT.Supporting_Documents
FROM T3
PIVOT (
max(VALUE)
FOR NAME IN (Match_Type,Name_Screened,Disposition,Compliance_Approval,Supporting_Documents)
) PVT
但我只得到这样的一行
Match_Type - Name_Screened - Disposition - Compliance_Approval - Supporting_Documents
Direct - JOHNY CHAVO - Successful - Yes - WORD NET MATCH
我想要 10 个数据行中的两行,但只得到一个
我想我只在 pivot 中错过了正确的聚合函数。请帮助
您需要稍微修改一下您的查询:
SELECT PVT.Match_Type, PVT.Name_Screened, PVT.Disposition,
PVT.Compliance_Approval,PVT.Supporting_Documents
FROM (
SELECT NAME, VALUE,
ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY VALUE) AS rn
FROM T3 ) AS src
PIVOT (
MAX(VALUE)
FOR NAME IN (Match_Type, Name_Screened, Disposition,
Compliance_Approval,Supporting_Documents)
) pvt
这将为 src
的每个 rn
值生成一个单独的行。
我在 sql 服务器中有一个 table 使用此代码创建的
CREATE TABLE t3
(`NAME` varchar(20), `VALUE` varchar(17));
INSERT INTO t3
(`NAME`, `VALUE`)
VALUES
('Name_Screened', 'johny bravo'),
('Name_Screened', 'JOHNY CHAVO'),
('Match_Type', 'Direct'),
('Match_Type', 'Direct'),
('Disposition', 'Successful'),
('Disposition', 'Successful'),
('Compliance_Approval', 'Yes'),
('Compliance_Approval', 'Yes'),
('Supporting_Documents', 'Lexix Nexis Match'),
('Supporting_Documents', 'WORD NET MATCH');
我正在尝试使用代码
转换此数据SELECT PVT.Match_Type, PVT.Name_Screened,PVT.Disposition,PVT.Compliance_Approval,PVT.Supporting_Documents
FROM T3
PIVOT (
max(VALUE)
FOR NAME IN (Match_Type,Name_Screened,Disposition,Compliance_Approval,Supporting_Documents)
) PVT
但我只得到这样的一行
Match_Type - Name_Screened - Disposition - Compliance_Approval - Supporting_Documents
Direct - JOHNY CHAVO - Successful - Yes - WORD NET MATCH
我想要 10 个数据行中的两行,但只得到一个 我想我只在 pivot 中错过了正确的聚合函数。请帮助
您需要稍微修改一下您的查询:
SELECT PVT.Match_Type, PVT.Name_Screened, PVT.Disposition,
PVT.Compliance_Approval,PVT.Supporting_Documents
FROM (
SELECT NAME, VALUE,
ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY VALUE) AS rn
FROM T3 ) AS src
PIVOT (
MAX(VALUE)
FOR NAME IN (Match_Type, Name_Screened, Disposition,
Compliance_Approval,Supporting_Documents)
) pvt
这将为 src
的每个 rn
值生成一个单独的行。