【问题标题】:Sql Pivot By Grouping two columnsSql Pivot通过分组两列
【发布时间】:2016-09-13 11:09:16
【问题描述】:

Sman Weekly Visit Party Wise

我在这里尝试实现的是对具有相同 LedId_Sman 和 LedId_Party 的行进行分组,然后在单个行中对访问的天数进行旋转视图。

我的实际表

LedId_Party LedId_Sman  VisitDay
----------- ----------- --------
426         296         3
426         296         6
441         296         2

我正在使用的查询

SELECT LedId_Party, LedId_Sman,[1]as Sun,[2]as Mon,[3] as Tue,[4] as Wed,[5] as Thu,[6] as Fri,[7] as Sat
FROM dbo.tbl_WeeklyVisit

Pivot(
Count(VisitDay) 
For VisitDay in
([1],[2],[3],[4],[5],[6],[7]
))AS PiviotTable

这是我目前得到的

LedId_Party LedId_Sman  Mon Tue Wed Thu Fri Sat Sun
        426       297   0   0   0   0   1   0   0
        426       297   0   1   0   0   0   0   0

这就是我想要的输出。

LedId_Party LedId_Sman  Mon Tue Wed Thu Fri Sat Sun
        426       297   0   1   0   0   1   0   0

我对 SQL 还很陌生,因此了解它的工作原理将非常有帮助和赞赏。

【问题讨论】:

  • 我认为这是正确的,只是再次检查了结果。 LedId_Party LedId_Sman 周一 周二 周三 周四 周五 周六 周日 426 297 0 0 0 0 1 0 0 441 297 0 1 0 0 0 0 0

标签: sql sql-server sql-server-2008-r2 pivot


【解决方案1】:

您的数据中可能有额外的列导致额外的行。使用数据透视时,最好使用仅包含数据透视中引用的列的子查询:

SELECT LedId_Party, LedId_Sman, [1] as Sun,[2] as Mon, [3] as Tue,
       [4] as Wed, [5] as Thu, [6] as Fri, [7] as Sat
FROM (SELECT LedId_Party, LedId_Sman, VisitDay
      FROM dbo.tbl_WeeklyVisit
     ) wv
PIVOT(Count(VisitDay) 
      For VisitDay in ([1], [2], [3], [4], [5], [6], [7]
                      )
     ) as PiviotTable

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多