如何在SQL Server中获取列明智的数据?

埃西·拉吉(Ethi Raj)

如何在SQL Server中获取列明智的数据?

格式:

Name    Date
----    -----
xxx     10/15/2015
xxx     12/15/2015
xxx     15/15/2015
yyy     20/15/2015
yyy     25/15/2015

所需的输出:

Name   Date         Date         Date
--------------------------------------------
xxx    10/15/2015   12/15/2015   15/15/2015
yyy    20/15/2015   25/15/2015
离子性

例如,您可以使用以下代码来透视数据:

在MySQL上:

SELECT data.name, 
    if(data.row_number=1,date,null) as date1,
    if(data.row_number=2,date,null) as date2,
    if(data.row_number=3,date,null) as date3,
    if(data.row_number=4,date,null) as date4,
    if(data.row_number=5,date,null) as date5
FROM (
    SELECT @row_number:=@row_number+1 AS row_number, name, date 
    FROM yourTable, (SELECT @row_number:=0) AS t
    ORDER BY date 
    ) as data
GROUP BY data.name;

在SQL Server上:

-- Generate demo data
CREATE TABLE #yourTable(name nvarchar(20), date date)
INSERT INTO #yourTable(name,date)
VALUES(N'xxx',GETDATE()), (N'xxx', DATEADD(day,-1,GETDATE())), (N'yyy',GETDATE()), (N'yyy', DATEADD(day,1,GETDATE()))

-- this is your part
SELECT pvt.*
FROM (
    SELECT ROW_NUMBER() OVER(PARTITION BY name ORDER BY date) as rn, name, date
    FROM #yourTable
) as data
PIVOT(
    MIN(date)
    FOR rn IN([1],[2],[3],[4],[5],[6])
) as pvt

-- cleanup
DROP TABLE #yourTable

如果您的日期列表会增加,这将是一个动态的枢轴,它将适应:

-- Generate demo data
CREATE TABLE #yourTable(name nvarchar(20), date date)
INSERT INTO #yourTable(name,date)
VALUES(N'xxx',GETDATE()), (N'xxx',DATEADD(day,1,GETDATE())), (N'xxx', DATEADD(day,-1,GETDATE())), (N'yyy',GETDATE()), (N'yyy', DATEADD(day,1,GETDATE()))

DECLARE @sql nvarchar(max), @columnlist nvarchar(max)

SELECT @columnlist = 
        COALESCE(@columnlist + N',['+CONVERT(nvarchar(max),ROW_NUMBER() OVER(ORDER BY date))+']', 
            N'['+CONVERT(nvarchar(max),ROW_NUMBER() OVER(ORDER BY date))+']'
        )
FROM #yourTable
WHERE name = (
    SELECT TOP (1) name
    FROM #yourTable
    GROUP BY name
    ORDER BY COUNT(*) DESC
)
SELECT @columnlist

-- this is your part
SET @sql = N'
SELECT pvt.*
FROM (
    SELECT ROW_NUMBER() OVER(PARTITION BY name ORDER BY date) as rn, name, date
    FROM #yourTable
) as data
PIVOT(
    MIN(date)
    FOR rn IN('+@columnlist+')
) as pvt'
EXEC(@sql)

-- cleanup
DROP TABLE #yourTable

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何编写SQL查询以从记录中获取列明智的逗号分隔值列表

来自分类Dev

如何在xslt中按列明智地添加数据HTML表

来自分类Dev

如何将用户自定义函数列明智地应用于熊猫中的分组数据

来自分类Dev

我该如何构建一个数据行明智的而不是列明智的?

来自分类Dev

如何在android中按列明智地动画gridview

来自分类Dev

如何在SQL Server中获取不同条件的数据?

来自分类Dev

如何获取数据明智的消息?

来自分类Dev

如何在MS SQL Server中明智地获得最高记录组?

来自分类Dev

如何在SQL Server中明智地打印表行?

来自分类Dev

如何使用SQL Server查询获取产品明智库存

来自分类Dev

如何在SQL中获取最新数据和先前数据

来自分类Dev

numpy中的列明智减法

来自分类Dev

Spark中的列明智操作

来自分类Dev

如何在SQL Server中获取当前/今天的日期数据

来自分类Dev

如何在SQL Server中编写表脚本以获取数据以及架构

来自分类Dev

如何在 SQL Server 中从今天开始获取前 7 天的数据

来自分类Dev

我如何根据 Java 中的日历周从日历年中明智地获取数据

来自分类Dev

如何通过Sql-Server查询在Parent_Id和Child_Id中明智地排列表数据

来自分类Dev

如何在SQL Server中获取最新和最近的值

来自分类Dev

如何在SQL Server中获取最大长度的值

来自分类Dev

如何在SQL Server中获取日期时间重复行?

来自分类Dev

如何在SQL Server 2008中获取特定值的列名

来自分类Dev

如何在SQL Server中获取全年的周数

来自分类Dev

如何在SQL Server 2008中获取时间总和字段

来自分类Dev

如何在SQL Server中根据条件获取xml节点

来自分类Dev

如何在SQL Server 2008中获取特定值的列名

来自分类Dev

如何在SQL查询中获取唯一数据?

来自分类Dev

如何在SQL中获取特定行或列的数据

来自分类Dev

如何在codeingiter中根据当前周获取sql数据?

Related 相关文章

  1. 1

    如何编写SQL查询以从记录中获取列明智的逗号分隔值列表

  2. 2

    如何在xslt中按列明智地添加数据HTML表

  3. 3

    如何将用户自定义函数列明智地应用于熊猫中的分组数据

  4. 4

    我该如何构建一个数据行明智的而不是列明智的?

  5. 5

    如何在android中按列明智地动画gridview

  6. 6

    如何在SQL Server中获取不同条件的数据?

  7. 7

    如何获取数据明智的消息?

  8. 8

    如何在MS SQL Server中明智地获得最高记录组?

  9. 9

    如何在SQL Server中明智地打印表行?

  10. 10

    如何使用SQL Server查询获取产品明智库存

  11. 11

    如何在SQL中获取最新数据和先前数据

  12. 12

    numpy中的列明智减法

  13. 13

    Spark中的列明智操作

  14. 14

    如何在SQL Server中获取当前/今天的日期数据

  15. 15

    如何在SQL Server中编写表脚本以获取数据以及架构

  16. 16

    如何在 SQL Server 中从今天开始获取前 7 天的数据

  17. 17

    我如何根据 Java 中的日历周从日历年中明智地获取数据

  18. 18

    如何通过Sql-Server查询在Parent_Id和Child_Id中明智地排列表数据

  19. 19

    如何在SQL Server中获取最新和最近的值

  20. 20

    如何在SQL Server中获取最大长度的值

  21. 21

    如何在SQL Server中获取日期时间重复行?

  22. 22

    如何在SQL Server 2008中获取特定值的列名

  23. 23

    如何在SQL Server中获取全年的周数

  24. 24

    如何在SQL Server 2008中获取时间总和字段

  25. 25

    如何在SQL Server中根据条件获取xml节点

  26. 26

    如何在SQL Server 2008中获取特定值的列名

  27. 27

    如何在SQL查询中获取唯一数据?

  28. 28

    如何在SQL中获取特定行或列的数据

  29. 29

    如何在codeingiter中根据当前周获取sql数据?

热门标签

归档