Я сравниваю абсолютную разницу между двумя таблицами, округленными до ближайших сотен. Мне нужен результирующий вывод, чтобы показывать только значения, превышающие 10 000. Мой вывод содержит в себе более низкие номера. Вот мой код:
select ve.Geography,
round(abs(ce.2010 - ve.2010), -2) as '2010',
round(abs(ce.2011 - ve.2011), -2) as '2011',
round(abs(ce.2012 - ve.2012), -2) as '2012',
round(abs(ce.2013 - ve.2013), -2) as '2013',
round(abs(ce.2014 - ve.2014), -2) as '2014',
round(abs(ce.2015 - ve.2015), -2) as '2015'
from ve join ce on ve.Geography = ce.Geography
where
ve.Geography = ce.Geography or
round(abs(ce.2010 - ve.2010), -2)>= 10000 or
round(abs(ce.2011 - ve.2011), -2)>=10000 or
round(abs(ce.2012 - ve.2012), -2)>=10000 or
round(abs(ce.2013 - ve.2013), -2)>=10000 or
round(abs(ce.2014 - ve.2014), -2)>=10000 or
round(abs(ce.2015 - ve.2015), -2)>=10000
;
Это ваша проблема:
where ve.Geography = ce.Geography
Это всегда будет возвращать true для каждой согласованной записи в вашем результирующем наборе. Удалите его, и запрос должен работать:
WHERE
ROUND(ABS(ce.2010 - ve.2010), -2) >= 10000 OR
ROUND(ABS(ce.2011 - ve.2011), -2) >= 10000 OR
ROUND(ABS(ce.2012 - ve.2012), -2) >= 10000 OR
ROUND(ABS(ce.2013 - ve.2013), -2) >= 10000 OR
ROUND(ABS(ce.2014 - ve.2014), -2) >= 10000 OR
ROUND(ABS(ce.2015 - ve.2015), -2) >= 10000