2015年6月24日 星期三

SQL INSERT INTO 順序不對, 無法使用 order by

最近在SQL SERVER 2008 上使用 INSERT INTO 時, 發覺塞入的資料沒有依日期排序, 而且後面也不能使用 order by 語法, 如下:  會出現語法錯誤

insert INTO dbo.VKAAJ_DAILYOFF 
        (DUTYDATE)
(
    SELECT WORKDATE
    FROM dbo.DUTYWORK A,DBO.WORKTIME B
    WHERE
    EMPLOYECD = @EMPLOYECD
    AND WORKDATE >=@BEGINDATE  AND WORKDATE <= @ENDDATE
    AND HOLIDAY = 'N'
    AND A.WORKTYPE = B.WORKTYPE
    AND A.COMPANYCD= B.COMPANYCD
    AND A.WORKDATE NOT IN
    (SELECT DUTYDATE FROM DBO.DAILYOFF WHERE
    EMPLOYECD = @EMPLOYECD
    AND WORKDATE >= @BEGINDATE AND WORKDATE <= @ENDDATE)
)
    ORDER BY WORKDATE
=========================================

後來將 () 拿掉就可以了

insert INTO dbo.VKAAJ_DAILYOFF 
        (DUTYDATE)

    SELECT WORKDATE
    FROM dbo.DUTYWORK A,DBO.WORKTIME B
    WHERE
    EMPLOYECD = @EMPLOYECD
    AND WORKDATE >=@BEGINDATE  AND WORKDATE <= @ENDDATE
    AND HOLIDAY = 'N'
    AND A.WORKTYPE = B.WORKTYPE
    AND A.COMPANYCD= B.COMPANYCD
    AND A.WORKDATE NOT IN
    (SELECT DUTYDATE FROM DBO.DAILYOFF WHERE
    EMPLOYECD = @EMPLOYECD
    AND WORKDATE >= @BEGINDATE AND WORKDATE <= @ENDDATE)

    ORDER BY WORKDATE