我有一组数据,列x和y.该集合包含行,对于任何2个给定值A和B,在x和y列中分别有一行A和B,并且在x和y列中将分别有第二行B和A.
例如
**Column X** **Column Y**
Row 1 A B
Row 2 B A
Run Code Online (Sandbox Code Playgroud)
我需要一个T-Sql查询,给出一个带有上述规则的集合将返回第1行或第2行,但不是两者.
答案是非常困难的,或者它很容易让我无法看到森林中的树木,无论是哪种方式都让我爬上了墙.
添加到您的查询谓词,
where X < Y
Run Code Online (Sandbox Code Playgroud)
你永远不会得到第二行,但总会得到第一行.
(这假定当您编写"两个给定值"时,您意味着两个不同的给定值;如果两个值可以相同,则添加谓词where X <= Y(以去掉所有"反向"行,其中X> Y)然后添加一个distinct到您的选择列表(将X == Y的任意两行折叠成一行).)
在回复评论时:
也就是说,如果当前您的查询是select foo, x, y from sometable where foo < 3;将其更改为select foo, x, y from sometable where foo < 3 and x < y;,或者针对第二种情况(其中X和Y不是不同的值)select distinct foo, x, y from sometable where foo < 3 and x <= y;.