数据透视表中的错误必须声明标量变量

时间:2016-08-21 16:41:42

标签: sql sql-server pivot

我有一个带有以下内容的SQL:

DECLARE @AssociadoID int

WITH BaseQuery AS 
(
    SELECT
        ValorPago,
        YEAR(Data) AS OrderYear,
        MONTH(Data) AS OrderMonth
    FROM 
        T_Eventos
    WHERE 
        ([AssociadoID] = @AssociadoID)
)
SELECT
    OrderYear,
    [1] AS [January],
    [2] AS [February],
    [3] AS [March],
    [4] AS [April],
    [5] AS [May],
    [6] AS [June],
    [7] AS [July],
    [8] AS [August],
    [9] AS [September],
    [10] AS [October],
    [11] AS [November],
    [12] AS [December]
FROM 
    BaseQuery 
PIVOT 
    (SUM(ValorPago) FOR OrderMonth IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) AS PVT
ORDER BY 
    January DESC

关于此查询,如果我删除DECLARE @AssociadoID,IDE Visual Studio将返回空查询,甚至是内容行。但是,如果我从查询构建中删除,则说我必须声明标量变量。

我对此块的目的只是为了显示来自人员的数据已登录系统

我应该怎么做才能解决这个问题??

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案: 只需在第一个选择结束时,只需添加参数:

SELECT ValorPago, YEAR(Data) AS OrderYear,
MONTH(Data) AS OrderMonth
FROM T_Eventos Where AssociadoID = @AssociadoID

没有必要在开始

上放置DECLARE @AssociadoID Int

在此之后,只需将SelectParameter设置为:)