簡體   English   中英

如果存在值,則SQL Access 2003創建列

[英]SQL Access 2003 create column if exisit value

我有三張桌子

    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;

使用將用值替換null的iif條件,並使用左外部聯接,因為普通聯接將過濾不匹配的行。 左聯接將使它們的值為NULL

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM