在一个SQL查询中替换具有不同值的记录的值

时间:2016-04-22 15:43:12

标签: mysql sql-server

我有一个数据集,我想创建一个列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

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用子选择和案例执行此操作。

<强> SQL Fiddle Demo

ProcessExplorer

答案 1 :(得分:0)

您可以尝试以下查询:

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中的内部查询仅评估一次。