0

SQL Server 2005 には、日付に基づく動的ピボットからのデータを保持する一時テーブル #Table1 があります。テーブルには、月/年に応じて 28、29、30、または 31 の列があります。次に、静的な 31 列を持つ別の一時テーブル #Table2 を作成し (レポートの書式設定用のデータを追加するため)、余分な列に null を含む #Table1 を追加します。

私は試した:

Select * into #Table2 from #Table1 

しかし、これは機能しません。#Table2 がデータベースに既に存在することがわかります。私はそれがあることを知っています、私はそこに置きました!!

または、ピボットを 2 月に実行する場合は列 29、30、および 31 を #Table 1 に追加し、6 月または 9 月に実行する場合は列 31 を追加する方法はありますか?

これで私のジレンマが説明され、簡単な解決策があることを願っています。私はこれであまりにもスマートではありません!!

4

2 に答える 2

1

次のように、ピボット ステートメントの他の日付と同様に、列名として 29、30、および 31 を追加できます。

SELECT 1,2,...,28,29,30,31
FROM table
PIVOT(SUM(aggregate column) FOR spreading column IN(1,2,...,28,29,30,31)) AS P;

Select * into新しいテーブルを作成するため、句を使用しないでください。次の句を使用する必要があります。

 insert into #Table2 
 select * from #Table1 

お役に立てれば!!!

于 2013-10-15T06:41:10.947 に答える
0

こんにちは、一時テーブル #table1 と #table2 を作成する前にこのコードを試してください。テーブルが存在するかどうかを確認し、存在する場合はそれを削除して、最終的な実行後にロジックに従って作成し、一時 DB から両方のテーブルを再度削除する必要があります。このコードが役立つことを願っています。 ここに画像の説明を入力

于 2013-10-15T06:49:23.277 に答える