2013-07-10 55 views
-2

所以查詢我做了忽略組特定的值:如何在SQL

select distinct id, str_replace(convert(varchar,start_time,102),'.','-') [date], 
    min(convert(varchar(8), start_time, 108)) [start time], 
    max(convert(varchar(8), start_time, 108)) [end time], 
    max(o) [o], 
    max(a) [a], case when error_msg != '(null)' then error_msg end [error?], 
    from table group by id order by id desc 

帶回了這一點:

id  date  start time end time o a error? 
------------------------------------------------------------  
7338971 2012-06-09 11:06:20 11:06:20 2 5 (null) 
7338970 2012-06-09 11:06:08 11:06:59 362 725 Yes 
7338970 2012-06-09 11:06:08 11:06:59 362 725 (null) 

其中數據是由ID分組。但是,id#7338970有兩個條目,因爲存在null和實際的錯誤。是否有任何方法可以忽略空值,並且只顯示7338970的一行,對錯誤列顯示yes? 因此,這將是:

id  date  start time end time o a error? 
------------------------------------------------------------  
7338971 2012-06-09 11:06:20 11:06:20 2 5 (null) 
7338970 2012-06-09 11:06:08 11:06:59 362 725 Yes 

在此先感謝

+0

請張貼的原始SQL查詢。 –

+0

你使用的是什麼rdbms?如果您想要查看某個ID只有一行,那麼它的錯誤是否爲空? –

+0

我正在使用sybase 5.5和是的,我想看看它是否爲空 –

回答

0

基礎上評論:「如果錯誤是零,那麼它應該顯示在錯誤列空」:

select distinct id, str_replace(convert(varchar,start_time,102),'.','-') [date], 
min(convert(varchar(8), start_time, 108)) [start time], 
max(convert(varchar(8), start_time, 108)) [end time], 
max(o) [o], 
max(a) [a], case when error_msg != '(null)' then isnull(error_msg,'null') end [error?], 
from table 
group by id order by id desc 
+0

我想看看如果錯誤爲空如果但是文件的行程沒有錯誤。 –

+0

我不明白你在說什麼。如果「沒有錯誤時出現錯誤」是什麼意思? –

+0

如果錯誤爲空,那麼它應該在錯誤列中顯示null,而不是完全排除它 –

1

嘗試增加:

and error is not null

到您的查詢。

+0

我想看看如果錯誤爲空,但如果沒有錯誤的編號 –