sql - 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
解决方案
数据透视查询的第一个 SELECT 部分基本上是指示您想要在结果数据透视表中包含哪些列。您选择作为透视依据的列中的行的值(在本例中为 phaseid)成为输出表中的列名,然后包含您拉入以填充新列的值(努力)。
在此示例中,成为列名的行值是整数,并且您通常不能以数字开头列名(无论如何在 MS SQL Server 中),并且以非常规命名指示列名或其他事物的方法是用方括号括起来。AS 命令允许您为列设置别名或重命名。
因此,您在这里选择要成为列的行值,并将它们重命名为有用的名称,使透视表清晰,以及这些透视值相关的 elementid 列及其行。
希望这是有道理的
推荐阅读
- javascript - 如何从 React 中的单个组件传递多个错误作为道具?
- swift - queryEqual(toValue: true, childKey: "isFromCreator") 不工作?
- ios - RxSwift:结合不同类型的可观察对象和映射结果
- c++ - 在arduino中将字节数组转换为位
- r - RShiny:RandomForest 可变长度不同,仅在反应时
- javascript - 如何在 Typescript 中使用 AnalyzerNode 处理 wav 文件?
- php - imagick字体属性问题
- javascript - 尝试使用代理扩展 JavaScript 数组时出现数组文字问题
- javascript - Typescript 类扩展自其他类不能用作接口属性
- coq - 如何在 coq 中编写一个“安全”的头部?