2

我有以下代码:

insert into @Precalculo (descripcion, Valor) 
  exec dbo.GetRankingTotalizador 
    @Fecha, 
    DateAdd(minute, (-1), DateAdd(day, 1, @Fecha)), 
    @cadenas, 
    @familias

insert into PrecalculoComparativaSemanal 
  select @Fecha, @cadenas, @familias, [1], [2], [3], [4] FROM
  (select Descripcion, Valor from @Precalculo) p 
  PIVOT (min(Valor) FOR Valor in ([1], [2], [3], [4])) as pvt

它给了我一个错误:

消息 102,级别 15,状态 1
“分钟”附近的语法不正确。

4

1 回答 1

8

一方面,您不能将表达式用作存储过程的参数。尝试:

DECLARE @d DATETIME;
SET @d =  DateAdd(minute, (-1), DateAdd(day, 1, @Fecha));

insert into @Precalculo (descripcion, Valor) 
  exec dbo.GetRankingTotalizador @Fecha, @d, @cadenas, @familias;

接下来,根据您的 SQL Server 版本,@table 变量并不总是INSERT/EXEC. 我忘记了它何时生效,但您可能需要改用 #temp 表。

最后,我强烈推荐:

insert into PrecalculoComparativaSemanal (missing, column, list)
于 2012-07-24T14:19:17.290 回答