我有一個表,我通過隊列填充,我無法改變表的結構。SQL「有條件」where子句中
問題: 表包含四個標識符 - SKU,部門級和子類 - 我需要從表中的第一個條件的順序返回等領域如下滿足:
- 如果SKU存在於表,然後獲取值的SKU
- 否則如果SKU系/類/子類存在於表中得到 值
- 否則如果SKU系/類存在於表 GET值
- 否則如果SKU部門存在該表,則獲取 值。
- 否則有對SKU沒有適用的值(我不認爲 發生這種情況)
我填充報表字段從該表中的Java應用程序,我不想寫四篇查詢來檢查這些情況。我不相信我能夠執行任何過程化SQL,因此我需要通過本機SQL查詢來完成此操作。
任何幫助表示讚賞。我不得不改變查詢了一下。以下查詢工作:
Select dept, class, subclass,
case
when sku = :sku then 1
when dept = :dept and class = :class and subclass = :subclass then 2
when dept = :dept and class = :class then 3
when dept = :dept then 4
end as priority,
field1, field2, field3, field4, field5
From schema.table
where sku = :sku
or (dept = :dept and class = :class and subclass = :class)
or (dept = :dept and class = :class and subclass is null)
or (dept = :dept and class is null and subclass is null)
order by priority asc
;
我錯過了一些東西。你是在填充桌面還是在查詢它?示例數據和期望的結果可以真正幫助解釋你想要做什麼。另外,用您正在使用的數據庫標記問題。 –