繁体   English   中英

在SQL Server中透视数据

[英]Pivoting Data in SQL Server

我在使用此代码创建的sql server中有一个表

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个数据行中获得两行,但仅获得一行,我认为我仅在数据透视中缺少正确的聚合函数。 请帮忙

您需要稍微修改您的查询:

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值产生一个单独的行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM