SQL Server中的数据透视

SQL Server中的数据透视,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在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'), ('Dis

我在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个数据行中的两行,但只得到一行
我想我只是错过了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
值生成一个单独的行

非常感谢你。当我获得15个声誉时,我将对此进行投票。更新如果您不想丢失数据的顺序并停止将其与其他行混合,请在原始表中添加一个ID字段(在我的示例T3中),然后在OVER中使用按ID排序,而不是按值排序。你怎么说@giorgos@AashishKumar这个新的
ID
列可以代替计算的
rn
字段。从这个意义上讲,您是对的:通过添加
ID
,您可以显式定义顺序,因此不依赖
VALUE