因此,我想显示将受汇率影响的项目列表。以下select语句显示产品清单以及原始销售价格,价值测试具有计算成本 - 汇率*的IF语句。如果它大于原始销售价格,那么查询应该打印它,如果不是只显示null将IF条件变量放在SQL中的Where子句中
除此之外,最终列表不应该包含NULL测试值。
我已经尝试在where子句中添加测试IS NOT NULL,但sql server无法识别该函数。我怎样才能显示它?
MYSQL SELECT:
select
p.itemcode, p.itemdescription, p.sellingprice, c.exchangerate,
IF (cos.costofitem * c.exchangerate > p.sellingprice,
cos.costofitem * c.exchangerate,
NULL) as test
from
product p
join supplier s on p.suppliercode = s.suppliercode
join currency c on c.countrycode=s.countrycode
join country co on co.countrycode=c.countrycode
left join cost cos on cos.itemcode=p.itemcode
where
c.countrycode = 'NZ' and s.excode = 0
group by p.itemcode
OUTPUT:
GS771516 UBBLE PARTY MACHINE 2175.00 37.38 NULL
GS771517 BUBBLE PARTY MACHINE JR 925.00 37.38 NULL
GS771518 TURBO BUBBLE MACHINE 1430.00 37.38 NULL
GS771989 GIANT BUBBLE WAND 435.00 37.38 747.6000
GS771999 MEGA BUBBLES 1235.00 37.38 NULL
,我想输出:
GS771989 GIANT BUBBLE WAND 435.00 37.38 747.6000
您必须在WHERE子句中重复该函数。 – Tomalak
原因是WHERE发生在SELECT之前。如果您愿意,您只能从已通过过滤器的内容中进行选择。这就是为什么WHERE不知道在SELECT中使用的公式或别名。您可以使用内部查询进行计算,并使用外部查询对计算进行过滤。如果这种情况在你的情况下更快,你必须进行测量。 – Tomalak