私は私にstartDate
とendDate
ユーザ定義パラメータに基づいて、このような出力を返し、myStoredProcedure
という名前の、ストアドプロシージャ(SP)を持っている:SPを修正せずにSPによって返された結果セットに追加の列を追加する方法はありますか?
PrimaryName SecondaryName Volume
A B 20
C D 30
A D 50
...
ので、ボリュームが定義された日付の間のすべてのケースの合計を表します。
mySecondStoredProcedure
という名前の別のSPでは、最初のSPを使用して結果を取得しています。しかし、私の問題は、私の出力には、year
である追加の属性が必要だということです。私は年間ベースのボリュームを見たいと思っています。私はmyStoredProcedure
を変更することは許されないのです
PrimaryName SecondaryName Volume Year
A B 12 2014
C D 14 2014
A D 20 2014
A B 8 2015
C D 16 2015
A D 30 2015
...
:したがって、私は見たい出力はその
のようなものがstartDate: 2014, endDate: 2015
を前提としています。したがって、私はwhile
ループを2番目のSPに作成して受信します。私のコードは次のようである:
declare @temp_table table
(
PrimaryGroup varchar(10),
SecondaryGroup varchar(10),
Volume int
)
while @startDate < @endDate
begin
insert into @temp_table
exec myStoredProcedure @startDate @endDate
set @startDate = DATEADD(YEAR,1,@startDate)
end
select * from @temp_table
これはyear
列なしで私の結果を与えています。上記の出力例で示したように、year
の列が必要です。私はそれを追加する方法を見つけることができませんでした。 myStoredProcedure
によって返される結果セットには主キーはありません。また、SQL Server 2008では、フィールドが一致しないと言って@temp_table
にyear
列を追加することはできません。 year
列を正しく追加するにはどうすればよいですか?どんな助けもありがとう!
編集:私は@temp_tableの定義でyear
列を追加すると、エラーが私が受け取る:Column name or number of supplied values does not match table definition.
は
年の列を宣言に追加すると、次のエラーが表示されます。列名または指定された値の数がテーブル定義と一致しません。 –
@ErayBalkanli挿入している列を含めるには、INSERT文を変更する必要があります。私の答えでは 'INSERT'文の'(PrimaryGroup、SecondaryGroup、Volume) '部分に注意してください。 – Siyual
ああ、ありがとう! –