Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
Sql server SQL Server:使用PIVOT运算符的分组聚合语义_Sql Server_Tsql_Sql Server 2008 - Fatal编程技术网

Sql server SQL Server:使用PIVOT运算符的分组聚合语义

Sql server SQL Server:使用PIVOT运算符的分组聚合语义,sql-server,tsql,sql-server-2008,Sql Server,Tsql,Sql Server 2008,我使用SQL Server 2008,我有一个表,其中包含以下形式的WA度量: CREATE TABLE #VistitorStat ( datelow datetime, datehigh datetime, name varchar(255), cnt int ) 表中两天的数据如下所示: 2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 New Visitor 221 2009-07-25 0

我使用SQL Server 2008,我有一个表,其中包含以下形式的WA度量:

CREATE TABLE #VistitorStat
(
    datelow datetime,
    datehigh datetime,
    name varchar(255),
    cnt  int
)
表中两天的数据如下所示:

2009-07-25 00:00:00.000 2009-07-26 00:00:00.000   New Visitor       221
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000   Unique Visitors   225
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000   Return Visitors   0
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000   Repeat Visitors   22
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000   New Visitor       263
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000   Unique Visitors   269
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000   Return Visitors   4
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000   Repeat Visitors   38
我想按天分组,并将指标转换为行形式。我可以找到的使用
PIVOT
运算符的示例仅显示基于
SUM
MAX
聚合函数的聚合。大概我需要将
groupby
语义传达给
PIVOT
操作符——注意:我找不到任何关于如何实现这一点的清晰示例/文档。请有人使用此查询的PIVOT运算符发布此--的正确语法

如果使用pivot无法做到这一点,您能想出一种优雅的方式来编写查询吗?如果不是的话,我只需要以转置的形式生成数据

回答后编辑:


我已经得出结论,枢轴操作符是不优雅的(到目前为止,我认为它是语法黑客)——我已经通过转置方式生成数据来解决这个问题。欢迎评论。

我不确定您想要的结果,但这每天都会给出一行:

CREATE TABLE #VistitorStat
(
 datelow datetime,
 datehigh datetime,
 name varchar(255),
 cnt  int
)


insert into #VistitorStat
      select  '2009-07-25 00:00:00.000','2009-07-26 00:00:00.000',   'New Visitor',       221 
union select  '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000',   'Unique Visitors',   225
union select  '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000',   'Return Visitors',   0
union select  '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000',   'Repeat Visitors',   22
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'New Visitor'    ,   263
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'Unique Visitors',   269
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'Return Visitors',   4
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'Repeat Visitors',   38


select * from #VistitorStat 
pivot (
    sum(cnt)
    for name in ([New Visitor],[Unique Visitors],[Return Visitors], [Repeat Visitors])

) p

我不确定您想要的结果,但这每天给出一行:

CREATE TABLE #VistitorStat
(
 datelow datetime,
 datehigh datetime,
 name varchar(255),
 cnt  int
)


insert into #VistitorStat
      select  '2009-07-25 00:00:00.000','2009-07-26 00:00:00.000',   'New Visitor',       221 
union select  '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000',   'Unique Visitors',   225
union select  '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000',   'Return Visitors',   0
union select  '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000',   'Repeat Visitors',   22
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'New Visitor'    ,   263
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'Unique Visitors',   269
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'Return Visitors',   4
union select  '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000',   'Repeat Visitors',   38


select * from #VistitorStat 
pivot (
    sum(cnt)
    for name in ([New Visitor],[Unique Visitors],[Return Visitors], [Repeat Visitors])

) p
(+1)是的,成功了。语法非常奇怪--甚至没有意义--我不想添加
cnt
值--但它可以工作:D.(+1)是的,这就成功了。语法非常奇怪——甚至没有意义——我不想添加
cnt
值——但它可以工作:D。