我有三张桌子
Product
- ID_Product
UP
- ID_Product
- UP_SUM
DOWN
- ID_Product
- DOWN_SUM对这三个表的查询创建了一个列Total_SUM = UP_SUM-DOWN_SUM
问题是,如果DOWN_SUM中没有值,那么Total_SUM就没有结果。
例如。
UP
1 - 2
2 - 4
3 - 2
DOWN
1 - 1
3 - 1
TOTAL_SUM
(1) 1
(2) 4 -> value missing
(3) 1事实上,我没有得到ID 2的值。
如果不是isNULL,我如何使用语句来获取TOTAL_SUM中的所有值?实际上,SQL查询是:
SELECT
Product.ID_Product,
UP.UP_SUM,
DOWN.DOWN_SUM,
[UP_SUM]-[DOWN_SUM] AS TOTAL_SUM,
FROM (PRODUCT INNER JOIN UP ON Product.ID_Product = UP.ID_Product)
INNER JOIN DOWN ON Product.ID_Product = DOWN.ID_Product;发布于 2016-01-25 11:22:33
使用将用值替换null的iif条件,并使用左外部联接,因为普通联接是在过滤那些行时不匹配的。左联接将使其值保持为空。
IIF(ISNULL( DOWN.DOWN_SUM) ,0,DOWN.DOWN_SUM)
SELECT
Product.ID_Product,
IIF(ISNULL(UP.UP_SUM),0,UP.UP_SUM),
IIF(ISNULL(DOWN.DOWN_SUM),0,DOWN.DOWN_SUM),
IIF(ISNULL(UP.UP_SUM),0,UP.UP_SUM)-IIF(ISNULL(DOWN.DOWN_SUM),0,DOWN.DOWN_SUM) AS TOTAL_SUM,
FROM (PRODUCT LEFT OUTER JOIN UP ON Product.ID_Product = UP.ID_Product)
LEFT OUTER JOIN DOWN ON Product.ID_Product = DOWN.ID_Product;https://stackoverflow.com/questions/34991084
复制相似问题