我有一個數量表。金額分爲三種方式:半月,每月和每季度。SQL數據庫,查找差異
- 如果量> 10000 =半每月
- 如果量> 5000 =每月
- 如果金額< = 5000 =季刊
在量表中的數據,必須在上述匹配。
如果有任何差異我需要吐出來對我。
我該怎麼寫這段代碼?
我有一個數量表。金額分爲三種方式:半月,每月和每季度。SQL數據庫,查找差異
在量表中的數據,必須在上述匹配。
如果有任何差異我需要吐出來對我。
我該怎麼寫這段代碼?
嗯,你可以只檢查:
select t.*
from t
where ((amount > 10000 and classification <> 'Semi-Monthly') or
(amount <= 10000 and amount > 5000 and classification <> 'Monthly') or
(amount <= 5000 and classification <> 'Quarterly')
);
這將返回的差異。
謝謝!現在似乎很明顯。 – Joe
將金額和分類都放在同一個表中,這是一個壞主意。你有多餘的數據,這就是爲什麼你現在擔心這兩列可能不匹配的原因。
有與適當的範圍內的分類單獨的表:
table classification ==================== text | range_start | range_end -------------+-------------+---------- Semi-Monthly | 10001 | null Monthly | 5001 | 10000 Quarterly | null | 5000
,並從表中刪除的分類。然後根據需要從連接中獲取分類:
select m.*, c.text as classification
from mytable m
join classification c on m.amount between coalesce(c.range_start, m.amount)
and coalesce(c.range_end, m.amount);
您已經爲MySQL和Oracle添加了標籤。你真的在使用哪個數據庫?您的表格是否有「金額」列和「分類」列? –
我打算只標記Oracle。是的,它有兩個,金額和分類。 – Joe
你是否試圖在查詢中找到它或在表上設置檢查約束? – Nicarus