【问题标题】:Can I use PIVOT without the brackets?我可以在没有括号的情况下使用 PIVOT 吗?
【发布时间】:2011-10-24 10:54:23
【问题描述】:
PIVOT 
(
    count(DueCount) FOR dueLibraries.s_folder IN ([Assembly Report-TUL],[Balance-TUL],[BOM-TUL],[Hydrostatic-TUL],[Inspection-TUL],[IOM Manual-TUL],[MTR-TUL],[NDT-TUL],[Performance-TUL],[Inputs - TUL],[Transmitted])
) as MonthlyTally 

我宁愿只有这个:

PIVOT 
(
    count(DueCount) FOR dueLibraries.s_folder IN (select * from dueLibraries)
) as MonthlyTally 

有没有办法做到这一点?

【问题讨论】:

  • 括号是必需的,因为你的名字中有空格和破折号。
  • 呃。现在我需要在 SQL 中进行字符串操作....怜悯。
  • 无论如何,语法不允许您用掩码替换 PIVOT 子句中的显式列列表(更不用说在那里使用 SELECT)。如果值/列的数量未定义,那么您可能想要执行dynamic PIVOT
  • 你们中的某个人可以回答您的评论吗?

标签: tsql sql-server-2008 pivot pivot-table


【解决方案1】:

您的问题似乎有两个方面。

首先,您的第一个 sn-p 的IN 列表中的标识符是分隔标识符。它们必须用方括号分隔,因为它们 do not obey the rules 用于 Transact-SQL 中的常规标识符(特别是因为它们包含空格和连字符)。

您问题的第二部分是关于用掩码之类的东西替换明确的列列表,以使列表动态化。现在,没有可用的语法,您唯一的选择似乎是带有 PIVOT 子句的动态查询。 Here's one example 如何实现。

【讨论】:

  • 我没有意识到这一点。非常感谢!
猜你喜欢
  • 2014-08-18
  • 2017-12-31
  • 2019-01-31
  • 2016-08-11
  • 2021-08-10
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多