SQL Server中的数据透视
我在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
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
。