INSERT INTO CLEANUP.DBO.TMP_CLAIM_PBI33562_2 (NCLAIMID, SATTYFILENO, DTLASTPMT, ACTUALPMTDATE, SWORKSTATIONID, DTCHANGEDON, NCHANGEDBY, NAPPLICATIONID)
; WITH LST_CTE AS
(
SELECT
NCLAIMID, MAX(DTTRANSACTION) AS ACTUALPMTDATE
FROM
CLAIMREGISTRY
WHERE
NTRANLINKID IS NULL
AND NTRANSACTIONCODEID IN (1,13)
GROUP BY
NCLAIMID
)
SELECT
C.NCLAIMID, C.SATTYFILENO, C.DTLASTPMT,
L.ACTUALPMTDATE, C.SWORKSTATIONID, C.DTCHANGEDON,
C.NCHANGEDBY, C.NAPPLICATIONID
FROM
CLAIM AS C
JOIN
LST_CTE AS L ON L.NCLAIMID = C.NCLAIMID
WHERE
CONVERT(VARCHAR, C.DTLASTPMT, 112) <> CONVERT(VARCHAR, L.ACTUALPMTDATE, 112)
0
A
回答
1
嘗試聲明你cte
第一:
;with LST_CTE as (
select NCLAIMID
, MAX(DTTRANSACTION) as ACTUALPMTDATE
from CLAIMREGISTRY
where NTRANLINKID is null and NTRANSACTIONCODEID in (1, 13)
group by NCLAIMID
)
insert into CLEANUP.DBO.TMP_CLAIM_PBI33562_2 (
NCLAIMID
, SATTYFILENO
, DTLASTPMT
, ACTUALPMTDATE
, SWORKSTATIONID
, DTCHANGEDON
, NCHANGEDBY
, NAPPLICATIONID
)
select C.NCLAIMID
, C.SATTYFILENO
, C.DTLASTPMT
, L.ACTUALPMTDATE
, c.SWORKSTATIONID
, c.DTCHANGEDON
, c.NCHANGEDBY
, c.NAPPLICATIONID
from CLAIM as C
inner join LST_CTE as L
on L.NCLAIMID = C.NCLAIMID
where CONVERT(varchar(30), C.DTLASTPMT, 112) <> CONVERT(varchar(30), L.ACTUALPMTDATE, 112)
而且,如果DTLASTPMT
和ACTUALPMTDATE
是date
或datetime
數據類型,你不必convert()
他們比較它們。
+0
感謝戈登後,它的工作原理。 –
2
的with
那張insert
之前。 。 。並且在一份聲明中中間沒有分號:
WITH LST_CTE AS (
SELECT NCLAIMID,MAX(DTTRANSACTION) AS ACTUALPMTDATE FROM CLAIMREGISTRY
WHERE NTRANLINKID IS NULL
AND NTRANSACTIONCODEID IN (1,13)
GROUP BY NCLAIMID
)
insert into CLEANUP.DBO.TMP_CLAIM_PBI33562_2 (NCLAIMID, SATTYFILENO,DTLASTPMT,ACTUALPMTDATE,SWORKSTATIONID,DTCHANGEDON,NCHANGEDBY,NAPPLICATIONID)
SELECT C.NCLAIMID, C.SATTYFILENO,C.DTLASTPMT,L.ACTUALPMTDATE,c.SWORKSTATIONID,c.DTCHANGEDON,c.NCHANGEDBY,c.NAPPLICATIONID
FROM CLAIM C JOIN
LST_CTE L
ON L.NCLAIMID = C.NCLAIMID
WHERE CONVERT(VARCHAR(255), C.DTLASTPMT, 112) <> CONVERT(VARCHAR(255), L.ACTUALPMTDATE, 112);
我也不喜歡WHERE
條款。如果你想比較公正的日期,然後比較日期:
WHERE CAST(C.DTLASTPMT as DATE) = CAST(L.ACTUALPMTDATE as DATE)
爲什麼轉換爲字符串來比較日期?
相關問題
- 1. 得到錯誤,同時使用時插入的RadControls數據
- 2. 當我試圖插入數據到表中,得到錯誤
- 3. 我得到錯誤,同時啓動崇
- 4. 從CTE插入記錄到表
- 5. 將值插入到表中時出錯
- 6. 錯誤插入到臨時表
- 7. 錯誤時插入到MSQLite
- 8. MySQL錯誤 - 插入到表
- 9. Mysql的插入,得到錯誤
- 10. 試圖插入的PostgreSQL:得到錯誤
- 11. 我得到時區錯誤
- 12. 錯誤:插入多個值我得到這個錯誤ORA-00911:無效字符
- 13. 同時採取原始輸入在phycharm我得到錯誤
- 14. 錯誤:錯誤的參數#1到'插入'(表預期,得到零)
- 15. 插入的與CTE查詢結果到一個臨時表
- 16. SQL插入不斷得到錯誤
- 17. 得到錯誤,同時通過的CocoaPods
- 18. 得到錯誤,同時增加proguard的
- 19. 得到錯誤,同時更新的LinqDataSource
- 20. 文本輸入插入錯誤的值到列表項
- 21. sqlite的蟒蛇插入到表錯誤
- 22. EndDate比插入交換約會時得到的StartDate錯誤早
- 23. 當我迷路時,我得到錯誤
- 24. 得到錯誤時
- 25. 插入到SQL默認值錯誤
- 26. 錯誤插入值到FMDB當
- 27. LINQ到SQL錯誤插入值
- 28. 收到錯誤消息時,我嘗試採取從數組值插入到MySQL
- 29. Chrome.storage.local得到錯誤的值
- 30. 我試圖插入表多邊形數據,然後我得到一個錯誤
你什麼錯誤? – litelite
把你嵌在SELECT語句前,但CTE聲明 – Adam