在tsql上的iif不会返回预期的结果

时间:2017-11-23 21:06:40

标签: tsql

我在查询中发出并在我比较某些值时没有返回正确的数据

select a.item, iif(a.value>b.value,0,1) as compare 
from table a left join table b on a.id=b.id

返回

item1, 0
item2, 0
item3, 0

我的数据是

table a 
item1 10
item2 20
item3 30

table b
item1 5
item2 25
item3 30

预期的正确结果是

item1, 0
item2, 1
item3, 0

当我使用ISNULL()函数返回

item1, 1
item2, 1
item3, 1

发生了同样的问题,例如......那么0结束

我真的不知道查询发生了什么,我发现问题在哪里找不到任何帮助。非常感谢。

2 个答案:

答案 0 :(得分:2)

看起来你正在加入同一张桌子,即:

table a

这是指一个名为'table'的表,别名为'a'。

如果您要将同一张桌子加入到自身中,这将考虑到您返回1的所有内容的结果,因为假设一对一匹配,a.valueb.value将始终相等

您是否在寻找更多类似的内容:

[table a] a left join [table b] b on a.id = b.id

答案 1 :(得分:0)

应该是内连接并使用[用于间隔表名称或列]

SELECT
  a.item,
  iif(a.value > b.value, 0, 1) AS compare
FROM [table a] a
INNER JOIN [table b] b
  ON a.id = b.id