2017-08-08 55 views
1

我正在運行下面的查詢,以帶回最大日期,其中值= 1.我遇到了一個問題,雖然當我試圖第二次返回最大日期值= 0並將此結果顯示在單獨的列中。在Vulcan數據庫中運行SQL。我的查詢是:SQL返回2個不同的日期從一個字段使用最大

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的部分。

任何幫助,非常感謝!

感謝

+0

「Group By」子句呢? –

+0

這些字面意思是如何存儲日期?它們是否被存儲爲'VARCHAR'?如果是這樣,您應該將列的數據類型更改爲'DATE',否則在對它們執行MAX()操作之前,您必須將這些值「CONVERT」轉換爲「DATE」。否則,你的結果將不會是你所期望的。 – Siyual

+0

value2date基於哪個條件? – Pirate

回答

5

我想你想:

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

注意:你的問題建議你存儲在相同的結構不同的表,在不同的客戶端數據。從數據建模和性能的角度來看,這是一個糟糕的主意。

+0

這樣做了,謝謝戈登!關於您的注意事項,是的,情況如此,具有相同結構的客戶端存儲在不同的表中,這是一個測試環境,許多分析師將加載所有獨立客戶端,並且可以修改/測試而不會影響其他任何客戶端。我試圖寫一些東西來快速檢查表中的一些值。有了額外的細節,這樣保存數據仍然是一個壞主意?我感謝您的意見! – user1570257

+1

@ user1570257。 。 。大概。如果分析師需要他們自己的工作區,他們可以使用視圖或將數據從主表複製到他們自己的工作區。 –

相關問題