簡體   English   中英

如何在IIF()函數中使用Joins,以及如何在MSAccess查詢的嵌套IIF()中使用select語句?

[英]How to use Joins in IIF() function and how to use select statement inside nested IIF () in MSAccess query?

我知道人們不能在Ms訪問查詢中使用大小寫表達式。 相反,必須使用IIF()函數。 我有一個MS SQL查詢,需要將其轉換為先前存在的舊Legacy應用程序之一的Ms訪問查詢。 我知道IIF()函數的一般語法; 但是,我有兩個表相互連接的復雜的case表達式。 你們任何人都可以幫我嗎?

CASE 
    WHEN ISNULL(tblDetail.ProductDiscPct,0)<>0 THEN 'MFG'
        WHEN EXISTS (
            SELECT 1 FROM ORDER_Shipment os 
            JOIN [ORDER_Items] oi 
            ON os.OrderId = oi.orderid 
            AND oi.MaterialId = tblDetail.MaterialID
            AND ISNULL(oi.ItemStatusId,0)=0
            AND oi.OrderItemTypeId = 300 
            AND [tblDetail].[Quantity] = [oi].[Qty]
            WHERE CAST(tblInvoice.ARInvID AS varchar) = os.InvNumber
            ) 
        THEN 'SPECIAL'
    ELSE ''
END AS LnNote

這是MS SQL查詢,我需要將其轉換為以下嘗試的MS-access查詢,但沒有給出任何結果,相反,它刪除了訪問報告中字段的控件源的下拉選項。

IIf(IsNull(qryDetail.ProductDiscountPct <> 0, "MFG", "" )) AS LnNote

這只是我一直在努力工作的案例陳述的第一行。 qryDetail只是我的主查詢中的一個子查詢。

IIF返回用於ms-accessBOOLEAN ,因此請檢查ISNULL是否為true,然后將其設置為0或本身。 然后檢查與0比較的值,並返回MFG或“”。

IIF(IIF(IsNull(qryDetail.ProductDiscountPct),0,qryDetail.ProductDiscountPct) <> 0,"MFG","") AS LnNote

IIF(Nz(tblDetail.ProductDiscPct,0) <> 0, "MFG", 
    IIF((SELECT COUNT(*) FROM ORDER_Shipment os 
    JOIN [ORDER_Items] oi 
    ON os.OrderId = oi.orderid 
    AND oi.MaterialId = tblDetail.MaterialID
    AND ISNULL(oi.ItemStatusId,0)=0
    AND oi.OrderItemTypeId = 300 
    AND [tblDetail].[Quantity] = [oi].[Qty]
    WHERE CAST(tblInvoice.ARInvID AS varchar) = os.InvNumber) > 0, "SPECIAL", "")
) AS LnNote

這是對SQL的粗略翻譯。 此外,它使用COUNT(*)代替EXISTS 我假設在該區域中不會有太多記錄,以使查詢變慢。

NzISNULL相似。

這有幫助嗎?

暫無
暫無

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

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