2

私はこれをしたい:

DECLARE @TmpTable TABLE = select * from someTable where someTable.Column1='BLAH'

@TmpTableはのサブセットである必要があり、のsomeTableフィールドを使用して構造を暗黙的に宣言したくはありません@TmpTable。むしろ、someTableから動的に作成する必要があります。

これは可能ですか?

あなたの助けと指導に感謝します!

私は一時的なテーブルを試すための提案をしました。ただし、エラーが発生します:

  The table #SubSet does not exist in the database

コードは次のとおりです。

DECLARE @StartDT DATE
DECLARE @MinDOS DATE
SELECT @MinDOS = MIN(dos) FROM accn_demographics
SELECT @StartDT = 
    CAST(CAST(datepart(YYYY,@MinDOS) AS varchar) + '-' + CAST(datepart(mm,@MinDOS) AS varchar) + '-' + CAST('01' AS varchar) AS DATETIME)
DECLARE @FileLocation VARCHAR(50)
DROP TABLE #SubSet
WHILE @StartDT < '20110901'
BEGIN
    SELECT * 
        INTO #SubSet
    FROM ViewAccountDetail
    WHERE datepart(yyyy,ViewAccountDetail.DOS) = datepart(yyyy,@StartDT)
        AND datepart(mm,ViewAccountDetail.DOS) = datepart(mm,@StartDT)
    SET @FileLocation='C:\test\'+'ViewAccountDetail'+cast(@StartDT as varchar)+'.csv'
    EXEC BCP_Text_File #SubSet, @FileLocation       
    SET @StartDT = DATEADD(MONTH,1,@StartDT)

    DROP TABLE #SubSet
END
4

3 に答える 3

5
select * 
into #temptable
from someTable 
where someTable.Column1='BLAH'

「@」を「#」に変更するだけです;)これにもCTEを使用できます。リンク

于 2012-06-14T19:12:21.487 に答える
1
WITH A
AS
(
    select * from someTable where someTable.Column1='BLAH'
)

A「一時テーブル」のエイリアスはどこにありますか。その後、別の通常のテーブルのように選択できます。あなたが作ることができないことを知ってOrder Byくださいselect * from someTable where someTable.Column1='BLAH'

于 2012-06-14T19:14:54.420 に答える
0

これが私がしたことです!

DECLARE @StartDT DATE 
DECLARE @MinDOS DATE 
SELECT @MinDOS = MIN(dos) FROM accn_demographics 
SELECT @StartDT = 
CAST(CAST(datepart(YYYY,@MinDOS) AS varchar) + '-' + CAST(datepart(mm,@MinDOS) AS varchar) + '-' + CAST('01' AS varchar) AS DATETIME) 
DECLARE @FileLocation VARCHAR(50) 
DROP TABLE #SubSet 
WHILE @StartDT < '20110901' 
BEGIN 
SELECT * 
INTO SubSet 
FROM ViewTransactionDetails 
WHERE datepart(yyyy,ViewTransactionDetails.DOS) = datepart(yyyy,@StartDT) 
AND datepart(mm,ViewTransactionDetails.DOS) = datepart(mm,@StartDT) 
SET @FileLocation='C:\test\'+'ViewTransactionDetails'+cast(@StartDT as varchar)+'.csv' 
EXEC BCP_Text_File SubSet, @FileLocation    
SET @StartDT = DATEADD(MONTH,1,@StartDT) 

DROP TABLE SubSet 
END

皆さんの並外れた助けに感謝します!

私は常設のテーブルを持って行き、それを落とし続けました!

于 2012-06-14T19:50:06.980 に答える