首页 > 解决方案 > SELECT AS 语句中的逗号含义

问题描述

以下查询执行数据透视

create table temp
(
  id int,
  teamid int,
  userid int,
  elementid int,
  phaseid int,
  effort decimal(10, 5)
)

insert into temp values (1,1,1,3,5,6.74)
insert into temp values (2,1,1,3,6,8.25)
insert into temp values (3,1,1,4,1,2.23)
insert into temp values (4,1,1,4,5,6.8)
insert into temp values (5,1,1,4,6,1.5)

select elementid
  , [1] as phaseid1
  , [5] as phaseid5
  , [6] as phaseid6
from
(
  select elementid, phaseid, effort
  from temp
) x
pivot
(
  max(effort)
  for phaseid in([1], [5], [6])
)p

我不明白查询的这一部分在做什么。有人可以解释吗?

select elementid
  , [1] as phaseid1
  , [5] as phaseid5
  , [6] as phaseid6

标签: sqlpivot

解决方案


数据透视查询的第一个 SELECT 部分基本上是指示您想要在结果数据透视表中包含哪些列。您选择作为透视依据的列中的行的值(在本例中为 phaseid)成为输出表中的列名,然后包含您拉入以填充新列的值(努力)。

在此示例中,成为列名的行值是整数,并且您通常不能以数字开头列名(无论如何在 MS SQL Server 中),并且以非常规命名指示列名或其他事物的方法是用方括号括起来。AS 命令允许您为列设置别名或重命名。

因此,您在这里选择要成为列的行值,并将它们重命名为有用的名称,使透视表清晰,以及这些透视值相关的 elementid 列及其行。

希望这是有道理的


推荐阅读