【问题标题】:SQL pivot in statement语句中的 SQL 透视
【发布时间】:2014-08-04 17:24:58
【问题描述】:

关于 SQL 中枢轴的问题。 如何在 IN 的 PIVOT 语句中使用任意名称? 例如,在下面的 IN 语句中,我直接指定了星期几 周一周二周三周四周五周六周日 但是是否可以仅在将用于 IN 的列名称上使用具有规范的列值? 因为有时我不知道 IN 中会包含哪些值。

SELECT * 
      FROM (
            SELECT 
            EmployeeID
           , [WeekDay] = DATENAME(WEEKDAY, DateOut)
      FROM dbo.WorkOut
) t
PIVOT (
      COUNT([WeekDay]) 
      FOR [WeekDay] IN (
      Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
      )
) p

【问题讨论】:

  • 是的,假设您有一个表,其中一列包含以下值:Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday 然后您可以在 IN 子句中使用“SELECT column_name from table_name”。跨度>
  • 搜索动态枢轴

标签: sql pivot-table


【解决方案1】:

不幸的是,您不能在枢轴中进行子查询。 为此,我们使用生成的 sql 语句(在 C# 程序中): - 第一步运行查询并为数据透视的 IN 部分创建逗号分隔列表, - 在第二步中运行枢轴。 它运行良好。 如果只使用 T-SQL,则必须在变量中创建整个 select 语句,并执行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    相关资源
    最近更新 更多