SQL Server 2008数据透视表查询列名称出错

时间:2014-05-31 14:28:52

标签: sql sql-server-2008 pivot

我在使用数据透视查询时遇到了一些问题。我是新来的。所以在互联网上找东西,所以我找到了几十个。所以我决定遵循这个Link。练习但似乎我遇到了一些明显的错误。

我的代码是:

select 
    risk, [Quick] AS Quick, [Brown] AS Brown, [Fox] AS Fox
from 
    (select risk, site
     from tst) as ps
PIVOT
(
  count(risk)
  for site in ([Brown], [Brown], [Fox])
  ) AS pvt

但这是一个错误:

  

列名'风险'无效。

基本上我想要这样的输出:

|Foo | Quick | Brown | Fox |
| 1  | 10    | 3     | 2   | 
| 2  | 5     | 4     | 4   |
| 3  | 4     | 1     | 5   |
| 4  | 2     | 3     | 7   |
| 5  | 3     | 2     | 1   |

这样的事情。只计算一个特定数字中有多少。任何帮助将非常感激。感谢

1 个答案:

答案 0 :(得分:1)

现有查询存在的问题是您在最终选择列表中以及聚合函数内部使用了列risk。在计算每个risk的{​​{1}}值后,无法显示。

要解决此问题,您可以将site列的第二个版本添加到子查询中,类似于以下内容。然后risk count的另一列,并在最终选择中显示一个:

risk

请参阅SQL Fiddle with Demo