首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2003创建列(如果是exisit值)

2003创建列(如果是exisit值)
EN

Stack Overflow用户
提问于 2016-01-25 11:06:41
回答 1查看 30关注 0票数 0

我有三张桌子

代码语言:javascript
运行
复制
    Product        
     - ID_Product

    UP
     - ID_Product
     - UP_SUM

    DOWN
     - ID_Product
     - DOWN_SUM

对这三个表的查询创建了一个列Total_SUM = UP_SUM-DOWN_SUM

问题是,如果DOWN_SUM中没有值,那么Total_SUM就没有结果。

例如。

代码语言:javascript
运行
复制
    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查询是:

代码语言:javascript
运行
复制
    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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-25 11:22:33

使用将用值替换null的iif条件,并使用左外部联接,因为普通联接是在过滤那些行时不匹配的。左联接将使其值保持为空。

IIF(ISNULL( DOWN.DOWN_SUM) ,0,DOWN.DOWN_SUM)

代码语言:javascript
运行
复制
 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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34991084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档