【问题标题】:SQL question using PIVOT, no aggregation column使用 PIVOT 的 SQL 问题,没有聚合列
【发布时间】:2022-01-27 08:58:14
【问题描述】:

我想在我的桌子上做一个PIVOT,但我没有聚合列。

SELECT 
    CONVERT(date, DataHora) AS dia,
    CONVERT(VARCHAR(5), DataHora, 108) AS hora
FROM 
    [clientes].[dbo].[Tb_Ponto]

结果:

2021-12-27  12:41
2021-12-28  12:42
2021-12-28  13:03
2021-12-28  14:08

我希望它保持这样:

2021-12-27  12:41 |  NULL | NULL 
2021-12-28  12:42 | 13:03 | 14:08

【问题讨论】:

标签: sql sql-server tsql pivot


【解决方案1】:

通过将窗口函数row_number() over() 添加到您的查询中,枢轴就变成了一件小事。

这假设您有一个已知的列数或最大列数。

Select *
 From (
        SELECT dia   = CONVERT(date, DataHora)
              ,hora  = CONVERT(VARCHAR(5),DataHora,108)
              ,ColNr = row_number() over (partition by CONVERT(date, DataHora) order by DataHora)
          FROM [clientes].[dbo].[Tb_Ponto]
      ) src
 Pivot ( max(hora) for ColNr in ([1],[2],[3],[4],[5]) ) pvt

【讨论】:

  • 正是如此,非常感谢
  • @GuilhermeMachado 总是乐于提供帮助
猜你喜欢
  • 2016-10-16
  • 2014-12-30
  • 1970-01-01
  • 2013-03-24
  • 2019-07-03
  • 2012-02-20
  • 1970-01-01
  • 2020-06-22
  • 2018-12-11
相关资源
最近更新 更多