none
多重條件下,重複值的問題 RRS feed

  • 問題

  • 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)

    2019年7月1日 上午 04:02

所有回覆

  • 我自己的想法拉!!

    你應該是 在組一個 判斷欄位 最後在一判斷欄位排序 就是你要的答案了

    selec *

    from (

        select * ,

         case when 滿足 C1 R1 then 1

         when 只滿足 C1 then 2

         when 只滿足 R1 then 3 end as [判斷]

         from [Table]

    ) as T

    order by T.[判斷]

    因為我也不知道你 A B 表的 結構 

    你也沒有 數據範例

    所以大致上 我覺得這樣應該就可以了

    2019年7月1日 上午 06:03
  • 您的問題有點看不太懂,所以先確認您的需求:

    從[B]中找出

    1. B的C1在A的C1最大與最小間,且,B的R1在A的最大最小間
    2. B的C1在A的C1最大與最小間
    3. B的R1在A的最大最小間

    如果1.有資料,就停

    1沒資料,2有資料,就撈出2,並停止

    1,2沒資料,就撈出3

    是以上這樣的邏輯嗎?

    只能用SQL語法作嗎?還是可以搭配ADO.NET撈資料?

    如果可以搭配程式,判斷的部分在程式作就好


    topcat(姍舞之間的極度凝聚)
    http://www.dotblogs.com.tw/topcat
    世界上有兩樣東西分享給別人後,不但不會變少,還會變更多:
    一個是快樂,另一個是知識~ 分享...是知識累積的開始...



    2019年8月2日 上午 02:53