![](/img/trans.png)
[英]SQL query to get value from the table for a record and update the fetched value for different record in the same table
[英]replace a value for a record with a different value in one SQL query
我有一個數據集,我想創建一個列date2,用非1900-01-01值替換每個ID的date1值。 我知道可以通過多個查詢來完成,但是我想在生成前3列的同一查詢中執行。 這可行嗎?
ID Col2 Date1 Date2
A 123 2015-01-10 2015-01-10
A 223 1900-01-01 2015-01-10
A 387 1900-01-01 2015-01-10
B 257 2016-03-04 2016-03-04
B 682 1900-01-01 2016-03-04
B 916 1900-01-01 2016-03-04
謝謝!
您可以使用子選擇和大小寫來做到這一點。
SELECT
id,
col2,
date1,
CASE WHEN date1 = '1900-01-01' THEN (SELECT MAX(date1) FROM YourTable yt2 WHERE yt2.id = yt1.id) ELSE date1 END AS date2
FROM YourTable yt1
您可以嘗試以下查詢:
SELECT
T1.*,
CASE
WHEN T1.date1 = '1900-01-01'
THEN T2.date1
ELSE T1.date1
END AS date2
FROM
tbl T1
LEFT JOIN
(
SELECT
MAX(date1) date1, id
FROM tbl
GROUP BY id
)T2
ON T1.ID=T2.ID
請注意,T2中的內部查詢僅評估一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.