2012-12-14 61 views
1
CREATE TABLE #AvailableDate (
    CustomKey INT IDENTITY (1,1), 
    SelectedFaceID INT, 
    FromDate DATETIME, 
    ToDate DATETIME, 
    TempDate DATETIME, 
    Diff INT) 

INSERT INTO #AvailableDate(SelectedFaceID, FromDate, ToDate, TempDate, Diff) 
    SELECT 
     SelectedFaceID, 
     FromDate, 
     ToDate, 
     (SELECT TOP 1 ToDate FROM #AvailableDate WITH(NOLOCK) ORDER BY #AvailableDate.CustomKey DESC), 
     (SELECT DATEDIFF(
        d, 
        ToDate, 
        (SELECT TOP 1 ToDate FROM #AvailableDate ORDER BY CustomKey DESC) 
       ) 
     ) 
    FROM 
     SelectedFace WITH(NOLOCK) 

在這裏,我還沒有已經越來越的SELECT TOP 1 ToDate FROM #AvailableDate WITH(NOLOCK) ORDER BY #AvailableDate.CustomKey DESC在上面的查詢值或#AvailableDate沒有數據的臨時表嵌套查詢

+1

但是如果表格是空的(你只是在上面創建它),那麼你會期望什麼值? – CyberDude

+0

'CREATE TABLE #AvailableDate ( \t CustomKey INT IDENTITY(1,1), \t SelectedFaceID INT, \t FROM日期DATETIME, \t TODATE DATETIME, \t TempDate DATETIME, \t DIFF INT ) INSERT INTO #AvailableDate ( SelectedFaceID, FROM日期, TODATE, TempDate ) \t SELECT 506「2002-12-01 00:00:00。 000','2003-12-02 00:00:00.000',(SELECT TOP 1 ToDate FROM #AvailableDate ORDER BY CustomKey DESC) \t UNION ALL \t SELECT 506,'2003-12-04 00:00:00.000' ,'2004-12-05 00:00:00.000',(SELECT TOP 1 ToDate FROM #AvailableDate ORDER BY CustomKey DESC)' 但是我在這裏得到它 – brykneval

+0

當你說'但我在這種情況下得到它'你在同一個會話中運行這個選擇嗎?例如。你的SQL查詢工具中的同一個窗口? #table_name至少是一些RDBMS中的臨時表 - 你不會說你正在使用哪一個。一個臨時表只對這個會話可見 – Karl

回答

0

您正在創建一個全新的臨時表,並期望它關聯的所有值有一些價值,因爲你在剛剛創建的同一個表上做選擇。值填充後纔會出現。

您仍然可以使用臨時表,但您必須重新安排批次並首先進行插入,並稍後使用TempDate和Diff字段更新記錄。