考虑以下数据
表1
Key Value
--- -----
A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
I 9
J 10
表2
Q MaxValue
- --------
X 3
Y 6
Z 10
当表1中的值小于或等于表2中的MaxValue时,我尝试创建一个与表1和表2匹配的连接,但仅限于它们大于先前MaxValue的情况,如此
结果
Key Value Q MaxValue
--- ----- - --------
A 1 X 3
B 2 X 3
C 3 X 3
D 4 Y 6
E 5 Y 6
F 6 Y 6
G 7 Z 10
H 8 Z 10
I 9 Z 10
J 10 Z 10
在这里你看到虽然AF都符合小于或等于6(Y&#39的MaxValue)的标准,但我希望AC只与X匹配,因为它们已经符合X的标准小于3,X是先前的最大值'。
这可以在SQL中实现吗?
答案 0 :(得分:1)
这不是很漂亮,但它应该适合你:
select Z.[Key], Z.Value, T2.Q, Z.MaxValue from
(
select Y.[Key], Y.Value, Min(MaxValue) as MaxValue from
(
select T1.*, T2.MaxValue from Table1 T1 cross join Table2 T2
) Y
where Y.Value <= Y.MaxValue
group by Y.[Key], Y.Value
) Z
inner join Table2 T2 on Z.MaxValue = T2.MaxValue
select T1.Value, T2.MaxValue from Table1 T1 cross join Table2 T2
获取Value和MaxValue的所有可能组合。Value
和Key
对其进行分组,并包含条件where Y.Value <= Y.MaxValue
,以排除同一MaxValue
重叠Value
的组合}}。Q
获取原始Table2
列。答案 1 :(得分:0)
希望能帮助
GetCustomerWiseRmTransfers(function() {
// ...everything that followed it in the $watch callback...
});