不錯的簡單問題,不需要sql代碼,只是你的優先級知識。跨多個UNION使用多個CASE語句是否存在限制?
在我的一個通用表表達式中,我有5個聯合,在SELECT語句中有三列Col1,Col2和Col3(Example)。所有這三個字段都有CASE WHEN語句,但有不同的運算符和條件(這就是爲什麼我有這麼多的UNION,就好像兩個WHEN語句是TRUE一樣,SQl服務器會選擇第一個,所以我附加了額外的行如果另一個條件爲TRUE)。下面是一個例子
Select CASE WHEN a.Co1<>b.Col1 THEN a.Col
from Table A
UNION
Select CASE WHEN a.Co1=b.Col1 THEN b.Col
from Table A
UNION
Select CASE WHEN a.Co1<>b.Col1 THEN a.Col
from Table A
UNION
Select CASE WHEN a.Co1<>b.Col1 and col3 = 'A Value' THEN a.Col
from Table A
UNION
Select CASE WHEN a.Co1=b.Col1 and col3 = 'A Value' THEN a.Col
from Table A
是否有限制和陷阱我必須注意?因爲我已經抓住CASE聲明擁有多項TRUE結果。我也知道在UNION中只使用了第一個引用的col名稱。我問,因爲我得到的值不符合CASE語句,所以我想知道是否在多個union語句的同一列上有多個情況是SQL Server解決衝突或問題。我想,聯合會之間的每個查詢只需追加一個記錄就可以了,好吧......這就是希望。
'b.Col'會來自哪裏?我期望在'A'和'B'表之間看到'JOIN'或者相關性。 –
你的例子與真實有多接近?你的第三塊看起來與第一塊相同。第四個塊與第一個塊沒有區別(返回同一列)。此外,對a.Co1 <> b.Col1和col3 ='A Value'評估爲真的行也會對第一個塊('a.Co1 <> b.Col1')評估爲真。 – Andrew
給我們一個「不遵守CASE聲明」的例子。一個好的格式是「這是我得到」,但「這是我想要的」。順便說一下,你是否應該使用UNION ALL而不是UNION(UNION刪除重複項)? –