SQL使用Max从一个字段返回2个不同的日期

时间:2017-08-08 15:25:04

标签: sql sql-server

我正在运行以下查询以恢复值= 1的最大日期。我遇到了一个问题,但是我试图在第二次返回最大日期时值= 0并显示此结果是一个单独的列。在Vulcan数据库中运行SQL。我的疑问是:

select '1' AS client, max(fielddate) AS 'Value1Date' from table1 where 
Value = 1
UNION
select '2' AS client, max(fielddate) AS 'Value1Date' from table2 where 
Value = 1
UNION
select '3' AS client, max(fielddate) AS 'Value1Date' from table3 where 
Value = 1

这给了我:

Client    Value1Date
1          03/01/17
2          02/01/17
3          02/01/17

我的问题是试图获得:

Client    Value1Date     Value2Date
1          03/01/17       05/01/2017
2          02/01/17       05/07/2017
3          02/01/17       05/09/2017

Value2Date与上述类似,除了max(fielddate)AS' Value2Date'不会有值= 1部分。

非常感谢任何帮助!

由于

1 个答案:

答案 0 :(得分:5)

我想你想要:

select '1' AS client,
       max(case when value = 1 then fielddate end) AS Value1Date,
       max(fieldDate) as max_fieldDate
from table1 ;

注意:您的问题表明您将不同的客户端数据存储在具有相同结构的不同表中。从数据建模和性能角度来看,这通常是一个坏主意。