2013-08-05 120 views
0

我遇到了一種情況,即將某種數據類型傳遞給COALESCE。然後設置= 0來檢查它是否等於0.問題是,這是行不通的!SQL Server COALESCE位與int相比較

(請注意,我沒有被授權更改任何列的數據類型)

這是我有:

SELECT Meters.ID, Consumption, Charge 
    FROM Data (nolock) 
    JOIN Meters 
     ON Data.MeterID = Meters.ID 

    WHERE COALESCE(Processed, 0) = 0 

後面處理的想法是,如果數據比處理它應該是1,所以我不想再處理它們。

// Processed是數據表中屬於類型位的列。我的連接是100%正確的,因爲我在沒有Where的情況下運行它們並執行沒有問題,問題是當我將其添加到哪裏時!即使該Processed列有1,0,NULL值....它不會返回任何東西!任何人都可以提出解決方案嗎?謝謝。

+0

我不明白爲什麼你用凝聚如果你只是在尋找這是由一個位類型控制的非加工者。 應該只是 - >在哪裏處理過的<> 1 – maSTAShuFu

+0

好點,那是因爲我不想要任何NULLS。 –

+0

然後你可以在哪裏isnull(processed,0)<> 1 – maSTAShuFu

回答

0
where processed is null or processed = 0 

是在邏輯上相當於expresion,我不figue爲什麼COALESCE不工作