首页 > 解决方案 > 消息 4145,级别 15,状态 1,第 3 行 在预期条件的上下文中指定的非布尔类型表达式,靠近“与”

问题描述

我需要这个查询而不使用Group by

SELECT
    SUM(a.MstSalesCounterVoucherDetails.Qty)
FROM
    MstSalesCounterVoucherDetails a
WHERE
    (ISNULL(a.MstSalesCounterVoucherDetails.UOMQTY, 0) - ISNULL(a.MstSalesCounterVoucherDetails.Qty, 0)) 
    AND (a.VoucherId=374956)

标签: sql-server

解决方案


您放在WHERE子句中的每条语句都需要产生一个trueor false。您有一个算术表达式,它产生一个数字,但不是 a true/false,即所谓的布尔值。此数值结果不会自动转换为布尔值(如在某些其他编程语言中)。

WHERE (ISNULL(a.MstSalesCounterVoucherDetails.UOMQTY, 0) - ISNULL(a.MstSalesCounterVoucherDetails.Qty, 0))

例如,您需要将其更改为:

WHERE (ISNULL(a.MstSalesCounterVoucherDetails.UOMQTY, 0) - ISNULL(a.MstSalesCounterVoucherDetails.Qty, 0)) <> 0

推荐阅读