Re: [SQL ] 多重條件下,重複值的問題

作者: ashin42 (Rock'n roll style)   2019-07-01 17:49:05
舉個例子好了 比較好理解
A Table定義SPEC
SPEC_ID C1_Minimun C1_Maximun R1_Minimun R1_Maximun
1 1 3 0 0
2 4 6 0 0
3 4 6 9 12
4 0 0 9 12
B Table 定義計算完的結果值
DATA_ID C1_Temp R1_Temp
1 5 10 ===> SPEC_ID = 3 , C1和R1兩者都符合SPEC,SPEC3優先2
2 5 5 ===> SPEC_ID = 2 , C1符合SPEC
3 2 11 ===> SPEC_ID = 1 , C1優先於R1,SPEC_ID 1優先4
4 7 11 ===> SPEC_ID = 4 , R1符合SPEC
※ 引述《ashin42 (Second)》之銘言:
: 資料庫名稱: MS SQL SERVER 2017
: 資料庫版本: v17.9.1
: 內容/問題描述:
: Hi 各位前輩早
: 我目前遇到了一個SQL的問題 , 我在資料表A定義了兩個參數的最大(C1和R1的Maximun)
: 與最小值(C1和R1的Minimum) , 資料表B則是實際的資料帶有參數實際值得資料 ,
: 我期望串出來的SQL有優先順序 , 滿足C1和R1的Maximun和Minimum的資料優先被找出 ,
: 如果沒有再找出滿足C1的Maximun和Minimum的資料 , 如果沒有再找出滿足R1的Maximun和
: Minimum的資料
: 但如果SQL向下面這樣下會有重複的問題 , 會重複找到分別符合條件的資料 , 無法過濾
: 掉重複的
: and (B.C1_Temp >= A.C1_Minimum and B.C1_Temp <= A.C1_Maximun and B.R1_Temp >=
: A.R1_Minimum and B.R1_Temp <= A.R1_Maximun )
: or (B.C1_Temp >= A.C1_Minimum and B.C1_Temp <= C1_Maximun)
: or (B.R1_Temp >= A.R1_Minimum and B.R1_Temp <= R1_Maximun)
作者: cutekid (可愛小孩子)   2019-07-01 19:35:00
DATA_ID 2 是不是同時符合 SPEC_ID 2 和 3DATA_ID 4 是不是同時符合 SPEC_ID 3 和 4
作者: ashin42 (Rock'n roll style)   2019-07-02 08:39:00
是的DATA_ID 2同時符合 SPEC_ID 2和3但有重複符合的狀況想要只取得SPEC_ID 3的結果
作者: cutekid (可愛小孩子)   2019-07-02 10:59:00
你上面的舉例DATA_ID 2 是取SPEC_ID 2 的結果,而不是 3
作者: ashin42 (Rock'n roll style)   2019-07-03 17:45:00
對 樓上大大正解 應該是DATA_ID 1 我打錯了

Links booklink

Contact Us: admin [ a t ] ucptt.com