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

1 つには、式をストアド プロシージャの引数として使用することはできません。試す:

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 に答える