我需要創建一個表上的數據進行操作,它已經提供給我這個樣子:我應該如何設計我的表
col1 col2 col3
1 < 3 50%
2 < 5 50%
3 < 10 50%
1 5>RC >=3 25%
2 10>RC >=5 25%
3 20>RC >=10 25%
1 >=5 0%
2 >=10 0%
3 >=20 0%
該系統的用戶將被傳遞一個數字,這是目前在col2
和col1
之上。假設用戶爲col2傳遞了7,爲col1傳遞了1。業務要求是,我應該回報用戶後面的行
1 >=5 0%
粗略地說,這意味着我在col2
檢查值,並注意到這是>=5
,其中我的輸入數據相符。
我想劃分col2
橫跨兩列 - 一個用於存儲數字,另一個用於運算符。事情是這樣的:
col1 col2 col3 col4
1 3 50% <
2 5 50% <
3 10 50% <
1 5>RC >=3 25%
2 10>RC >=5 25%
3 20>RC >=10 25%
1 5 0% >=
2 10 0% >=
3 20 0% >=
Thsi方式,我將能夠寫出解決基於第一個和最後三列數據的查詢查詢(雖然我沒有運行的查詢現在,我只是做了試運行)。我目前無法弄清的是 - 如何解決第4,5,6行中的數據?您可以忽略這些行中的RC
部分,因爲我可以放棄它,因爲我關心的是我的查詢的數字範圍。
我試圖拆分數據行4,5,6各2行,是這樣的:
1 3 25% >=
1 5 25% <
2 5 25% >=
2 10 25% <
3 10 25% >=
3 20 25% <
但是,我在這裏看到一個迫在眉睫的問題,當談到檢索數據。假設用戶參與col2 = 7 AND col1 = 1
。現在,我應該只有一行,這是我的問題的第一個表中的第7行,但我也得到了一個額外的行(最後一個表中的第一行,我正在爲BETWEEN條件拆分數據)
任何人都可以建議我一個更好的方法來存儲這些數據,以便我的要求可以實現嗎?
SQLFiddle演示:http://www.sqlfiddle.com/#!4/d2d90/7
感謝@Mikhail我已經嘗試這種方法拆分數據到單獨的列,但由於我在查詢中犯了一個簡單的錯誤,我被卡住了。您的查詢向我顯示,並且現在按預期工作!非常感謝! – Incognito