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

男孩帕斯莫

我有一些关于数据透视查询的问题。我是新来的。所以在互联网上找东西,所以我找到了几十个。因此,我决定关注此链接一直在练习,但似乎我遇到了一些明显的错误。

我的代码是:

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   |

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

塔林

现有查询的问题是您正在使用risk最终选择列表中的列以及聚合函数中的列。计算完risk每个值后,site将无法显示

要解决此问题,您可以将risk的第二个版本添加到您的子查询中,如下所示。然后,您需要在count该列的另一列中risk显示最终选择项:

select risk, [ADAB] AS ADAB, [Bahrain] AS Bahrain, [Thumrait] AS Thumrait
from 
(
  select risk, piv_risk = risk, site
  from qcqcif
) as ps
PIVOT
(
  count(piv_risk)
  for site in ([ADAB], [Bahrain], [Thumrait])
) AS pvt;

参见带有演示的SQL Fiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章