作者ashin42 (Second)
看板Database
标题Re: [SQL ] 多重条件下,重复值的问题
时间Mon Jul 1 17:49:05 2019
举个例子好了 比较好理解
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)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.191.52 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1561974547.A.0FC.html
※ 编辑: ashin42 (60.250.191.52 台湾), 07/01/2019 17:55:11
1F:推 cutekid: DATA_ID 2 是不是同时符合 SPEC_ID 2 和 3 07/01 19:35
2F:→ cutekid: DATA_ID 4 是不是同时符合 SPEC_ID 3 和 4 07/01 19:37
3F:→ ashin42: 是的DATA_ID 2同时符合 SPEC_ID 2和3 07/02 08:39
4F:→ ashin42: 但有重复符合的状况想要只取得SPEC_ID 3的结果 07/02 08:39
5F:推 cutekid: 你上面的举例DATA_ID 2 是取SPEC_ID 2 的结果,而不是 3 07/02 10:59
6F:→ ashin42: 对 楼上大大正解 应该是DATA_ID 1 我打错了 07/03 17:45