sql - '1' 附近的语法不正确。 SQL Pivot 需要 ID、QUOTED_ID 或 '.' 错误

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

我有一个包含大学统计数据的表格,如下所示:

StatID | UniversityID | StatValue
1      | 1            | 100
2      | 1            | 90
3      | 1            | 80
1      | 2            | 50
2      | 2            | 55

我希望查询返回如下内容:

(Rows are StatIDs, Columns are UniversityIDs)
StatID | 1             | 2             | 3
1      | 100           | 50            | NULL
2      | 90            | 55            | NULL
3      | 80            | NULL          | NULL

这是我的查询:

SELECT StatID, 1, 2, 3
FROM 
    (SELECT StatID, UniversityID, StatValue FROM @table) up
PIVOT 
    (MAX(StatValue) FOR UniversityID IN (1, 2, 3)) AS pvt
ORDER BY StatisticID;

我在 FOR UniversityID IN (1, 上收到错误消息:

Incorrect syntax near '1'. Expecting ID, QUOTED_ID, or '.'.

我做错了什么?它与 int 作为列标题有关吗?

我将使用它来处理约 260,000 行(约 300 列和约 3,000 行)

最佳答案

您的 IN 语法错误:

SELECT StatisticID, 1, 2, 3
FROM
     (SELECT StatisticID, UniversityID, Value
     FROM @table) up
PIVOT
     (MAX(Value) FOR UniversityID IN ([1], [2], [3])) AS pvt
ORDER BY StatisticID;

关于sql - '1' 附近的语法不正确。 SQL Pivot 需要 ID、QUOTED_ID 或 '.' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338400/

相关文章:

mysql - 我怎样才能加快我的 MySQL 查询 (JOINs + GROUP BY)

sql-server - 返回 "default"记录集的 SQL 查询

sql - 递归查询不正确?

sql - 如何生成特定长度的单列?

sql - 在事务中更新表(使用 Service Broker 的审计触发器)

sql-server - 如何在 SQL Server 中将文本数据更改为数字?

sql - 最常见的 SQL 反模式有哪些?

SQL:如何使存储过程中的表名动态化

php - wordpress 中的 Woocommerce - 最近售出的产品?

sql-server - 默认 SQL Server 端口