ms sql查询将不同情况下的行转换为列
我有一张如下的表格,我尝试了很多解决方案,但没有成功。请帮我解决这个问题ms sql查询将不同情况下的行转换为列,sql,sql-server,pivot,Sql,Sql Server,Pivot,我有一张如下的表格,我尝试了很多解决方案,但没有成功。请帮我解决这个问题 ________________________________________ |Trend | MemberName | MemberValue| |---------------------------------------| |1/1/2017 | TCS | 6215812.027| |1/1/2017 | InfoSys | 29
________________________________________
|Trend | MemberName | MemberValue|
|---------------------------------------|
|1/1/2017 | TCS | 6215812.027|
|1/1/2017 | InfoSys | 2920385.747|
|1/1/2017 | Maruti | 3223330.947|
|2/1/2017 | TCS | 4644255.532|
|2/1/2017 | InfoSys | 2378019.663|
|2/1/2017 | Maruti | 2315258.732|
|3/1/2017 | TCS | 4377771.365|
|3/1/2017 | InfoSys | 2457987.188|
|3/1/2017 | Maruti | 2060665.477|
|4/1/2017 | TCS | 3749728.998|
|4/1/2017 | InfoSys | 2161210.683|
|4/1/2017 | Maruti | 1828319.789|
|5/1/2017 | TCS | 3727746.97 |
|5/1/2017 | InfoSys | 2478883.144|
|5/1/2017 | Maruti | 1717573.406|
----------------------------------------
我想要这样
____________________________________________________________
|Trend | TCS /Top1 | InfoSys/Top2 | Maruti/Top2|
-------------------------------------------------------------
|1/1/2017 | 6215812.027 | 2920385.747 | 3223330.947|
|2/1/2017 | 4644255.532 | 2378019.663 | 2315258.732|
|3/1/2017 | 4377771.365 | 2457987.188 | 2060665.477|
|4/1/2017 | 3749728.998 | 2161210.683 | 1828319.789|
|5/1/2017 | 3727746.97 | 2478883.144 | 1717573.406|
-------------------------------------------------------------
成员名称可以是Top1、Top2、Top3等。
您可以使用给定的查询创建表并生成示例数据
CREATE TABLE Members
(
Trend DATE,
MemberName VARCHAR(20),
MemberValue FLOAT
)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('1/1/2017','TCS',6215812.027)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('1/1/2017','InfoSys',2920385.747)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('1/1/2017','Maruti',3223330.947)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('2/1/2017','TCS',4644255.532)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('2/1/2017','InfoSys',2378019.663)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('2/1/2017','Maruti',2315258.732)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('3/1/2017','TCS',4377771.365)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('3/1/2017','InfoSys',2457987.188)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('3/1/2017','Maruti',2060665.477)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('4/1/2017','TCS',3749728.998)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('4/1/2017','InfoSys',2161210.683)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('4/1/2017','Maruti',1828319.789)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('5/1/2017','TCS',3727746.97)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('5/1/2017','InfoSys',247888.144)
INSERT INTO Members(Trend, MemberName, MemberValue) VALUES('5/1/2017','Maruti',1717573.406)
你需要使用pivot 有关pivot的更多详细信息,请访问以下链接: 您可以对结果使用此查询
select * from
(
select Trend, MemberName, MemberValue from Members
) M
pivot
(
sum(MemberValue)
for MemberName in ([TCS], [InfoSys], [Maruti])
) piv;
结果
Trend TCS InfoSys Maruti
2017-01-01 6215812,027 2920385,747 3223330,947
2017-02-01 4644255,532 2378019,663 2315258,732
2017-03-01 4377771,365 2457987,188 2060665,477
2017-04-01 3749728,998 2161210,683 1828319,789
2017-05-01 3727746,97 247888,144 1717573,406
希望这对您有所帮助。MS-SQL已被使用。搜索有关如何转置表数据的问题可能会对您有所帮助。
成员名称可以是Top1、Top2、Top3等是什么意思?
?@ManojPilania正在等待什么?(您需要研究并解决自己的问题。)因此,如果可能有不同的列数,您必须搜索有关动态轴心的信息。