【问题标题】:SQL Server 08 - pivot - Change Column NameSQL Server 08 - 数据透视 - 更改列名
【发布时间】:2016-02-03 15:37:32
【问题描述】:

我有这个代码:

SELECT * FROM(
   SELECT A.Id,
          B.Note,
          C.Value,
          C.Ammount
   FROM Table1 A
   LEFT JOIN Table2 B ON A.Id = B.Id
   LEFT JOIN Table3 C ON B.Id = c.Id AND B.Name = C.Name
   INNER JOIN(
      SELECT Name, LName, AxValue, Code, Number
      FROM Table Ax
      Where (Code = 80 AND Name = 'Bo') AS D ON D.AxValue = C.Value)
)AS Node1
PIVOT(
   SUM(Ammount)
   FOR Value IN ([1], [2])
)AS Node2

结果是这样的

Id   Note   1    2
--------------------
01   ok    500  100

有没有办法用名称(Ex1,Ex2)而不是数字(1,2)重命名最后两列?

【问题讨论】:

    标签: sql-server sql-server-2008 pivot columnname


    【解决方案1】:

    替换:

    SELECT * FROM(
    ...
    

    SELECT Id, Note, [1] as Ex1, [2] as Ex2 FROM(
    ...
    

    最好将* 替换为您需要的列。您可以使用as 为它们起别名。

    您可以在这里找到更多信息:Using Table Aliases

    这里是column_ alias:SELECT Clause

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT Id, Note, [1] as Ex1, [2] as Ex2 FROM(
         SELECT A.Id,
                B.Note,
                C.Value,
                C.Ammount
         FROM Table1 A
         LEFT JOIN Table2 B ON A.Id = B.Id
         LEFT JOIN Table3 C ON B.Id = c.Id AND B.Name = C.Name
         INNER JOIN(
            SELECT Name, LName, AxValue, Code, Number
            FROM Table Ax
            Where (Code = 80 AND Name = 'Bo') AS D ON D.AxValue = C.Value)
      )AS Node1
      PIVOT(
         SUM(Ammount)
         FOR Value IN ([1], [2])
      )AS Node2
      

      您需要指定列的名称,而不是使用*

      【讨论】:

      • 当我运行它时,我得到错误:无法绑定多部分标识符“A.ID”。 (对于其他别名也是如此)
      猜你喜欢
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多