Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ms sql查询将不同情况下的行转换为列_Sql_Sql Server_Pivot - Fatal编程技术网

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正在等待什么?(您需要研究并解决自己的问题。)因此,如果可能有不同的列数,您必须搜索有关动态轴心的信息。