SQL Server PIVOT多个日期

监理

嗨,我的数据在这样的表中:

Herd | Tag | Byr | Mob | Date        | Trait | Value
-----|-----|-----|-----|-------------|-------|-------
6002 | 1/08| 2008| 1   | 2015-08-17  | LWT   | 425
6002 | 1/08| 2008| 3   | 2015-12-22  | LWT   | 516
6002 | 1/08| 2008| 4   | 2016-04-06  | LWT   | 688

我需要使用PIVOT函数将其从长格式更改为宽格式

Herd | Tag | Byr | Mob | 2015-08-17 | Mob | 2015-12-22 | Mob | 2016-04-06
-----|-----|-----|-----|------------|-----|------------|-----|------------
6002 | 1/08| 2008| 1   | 425        |  3  |  516       |  4  |    688

任何帮助将不胜感激

约翰·卡佩莱蒂

这是多列的动态数据透视表

Declare @SQL varchar(max) 
Set @SQL = Stuff((Select  Distinct ',' +QuoteName(concat('Mob_',Date))+' as Mob,'+QuoteName(Date)
                   From   Yourtable 
                   Order by 1 
                   For XML Path('')),1,1,'') 

Select  @SQL = '
Select [Herd],[Tag],[Byr],' + @SQL + '
From (
        Select [Herd],[Tag],[Byr]
              ,B.* 
        From  YourTable A
        Cross Apply (
                     Values (concat(''Mob_'',A.Date),cast(A.Mob as nvarchar(50)))
                           ,(concat('''',A.Date)    ,cast(A.Value as nvarchar(50)))
                    ) B (Item,Value)
     ) A
Pivot (max([Value]) For [Item] in (' + Replace(@SQL,' as Mob','') + ') ) p'

Exec(@SQL);

退货

在此处输入图片说明

编辑

2014年更新... Concat()和值

编辑2:

强制转换nvarchar(50)的另一种方法是使用format()。例如:

             Values (concat(''Mob_'',A.Date),Format(A.Mob,''0''))
                   ,(concat('''',A.Date)    ,Format(cast(A.Value as decimal(18,2)),''#,##0.00''))
            ) B (Item,Value)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server日期分区列

来自分类Dev

SQL Server 2008-枚举多个日期范围

来自分类Dev

如何在动态Pivot SQL Server 2008中对日期进行排序或排序

来自分类Dev

SQL Server : PIVOT Timestamp and calculate

来自分类Dev

在SQL Server中的多个列上使用Pivot

来自分类Dev

日期格式问题SQL Server

来自分类Dev

SQL Server Pivot在多个字段上

来自分类Dev

使用SQL Server从具有多个日期的字符串中提取最小日期

来自分类Dev

SQL Server:日期减去

来自分类Dev

SQL Server Pivot语法

来自分类Dev

对SQL SERVER中的多个记录使用PIVOT

来自分类Dev

SQL Server检索多个记录的最后日期

来自分类Dev

SQL Server Pivot多列

来自分类Dev

将SQL Server数据从多个日期列格式化为单个日期列

来自分类Dev

多个列上的SQL Server Pivot-另一个维度

来自分类Dev

SQL Server Pivot In子句

来自分类Dev

SQL Server中多个表的最新日期和价格

来自分类Dev

SQL Server:多个日期比较

来自分类Dev

SQL Server Dynamic Pivot的问题

来自分类Dev

日期SQL Server加入

来自分类Dev

SQL Server多个分组

来自分类Dev

PIVOT SQL Server 2012中的日期列

来自分类Dev

SQL Server PIVOT与dateadd()

来自分类Dev

SQL Server日期时间

来自分类Dev

SQL Server Pivot 排序问题

来自分类Dev

在 SQL Server 2012 中计算多个日期和代码的 RSI

来自分类Dev

SQL Server:选择日期最大的多个项目代码

来自分类Dev

SQL Server 日期计算

来自分类Dev

SQL Server - PIVOT 按日期分组的表