簡體   English   中英

在一個SQL查詢中用不同的值替換記錄的值

[英]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

謝謝!

您可以使用子選擇和大小寫來做到這一點。

SQL小提琴演示

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM