通过SELECT语句中的ISNULL语句进行筛选

时间:2017-05-26 18:12:27

标签: sql isnull

我坚持使用一部分代码,我无法弄清楚如何正确使用ISNULL。 我试图按位置和变体代码查找商品的所有销售价格。问题在于,并非所有具有变体的项目都在变体级别的销售价格表中定价。我试着说是否没有变体匹配,找到variant =''。

SELECT  [Item Ledger].[Location Code], [Item Ledger].[Item No_] AS "No_", [Item Ledger].[Variant Code]
, (SELECT   [Item].[Description] FROM   [Wings$Item] AS "Item"  WHERE   [Item].[No_] = [Item Ledger].[Item No_]) AS "Description"
, (SELECT   [Item Variant].[Variant Dimension 1] FROM [Wings$Item Variant Registration] AS "Item Variant" WHERE [Item Variant].[Item No_] = [Item Ledger].[Item No_] 
    AND [Item Variant].[Variant] = [Item Ledger].[Variant Code]) AS "Color"
, (SELECT   [Item Variant].[Variant Dimension 2] FROM [Wings$Item Variant Registration] AS "Item Variant" WHERE [Item Variant].[Item No_] = [Item Ledger].[Item No_] 
    AND [Item Variant].[Variant] = [Item Ledger].[Variant Code]) AS "Size"
, (SELECT   [Item].[Vendor No_] FROM    [Wings$Item] AS "Item"  WHERE   [Item].[No_] = [Item Ledger].[Item No_]) AS "Vendor No."
, (SELECT   [Item].[Division Code] FROM [Wings$Item] AS "Item"  WHERE   [Item].[No_] = [Item Ledger].[Item No_]) AS "Division Code"
, (SELECT   [Item].[Item Category Code] FROM    [Wings$Item] AS "Item"  WHERE   [Item].[No_] = [Item Ledger].[Item No_]) AS "Item Category Code"
, (SELECT   [Item Category].[Description] FROM [Wings$Item Category] AS "Item Category" WHERE [Item Category].[Code] = [Item Ledger].[Item Category Code]) AS "Item Cat. Description"
, (SELECT   [Item].[Product Group Code] FROM    [Wings$Item] AS "Item"  WHERE   [Item].[No_] = [Item Ledger].[Item No_]) AS "Product Group Code"
, (SELECT   [Product Group].[Description] FROM [Wings$Product Group] AS "Product Group" WHERE [Product Group].[Code] = [Item Ledger].[Product Group Code]) AS "Prod. Group Description"
, (SELECT   CAST([Item].[Last Direct Cost] AS decimal(18,2)) FROM   [Wings$Item] AS "Item"  WHERE   [Item].[No_] = [Item Ledger].[Item No_]) AS "Last Cost"

, (SELECT DISTINCT  CAST(MAX([Sales Price].[Unit Price]) as decimal(18,2))
    FROM [Wings$Sales Price] AS "Sales Price", [Wings$Store Price Group] AS "Store Price"
    WHERE EXISTS 
        (SELECT DISTINCT  [Store Price].[Store]
            , [Sales Price].[Item No_]
            , (SELECT   [Item].[Description] FROM [Wings$Item] AS "Item" WHERE [Item].[No_] = [Sales Price].[Item No_]) AS "Description"
            , [Sales Price].[Variant Code]
            , [Sales Price].[Sales Code]
            , CAST([Sales Price].[Unit Price] as decimal(18,2)) AS "Unit Price"
        FROM [Wings$Sales Price] AS "Sales Price" JOIN [Wings$Picking _ Receiving lines] AS "Picking Lines" ON [Sales Price].[Item No_] = [Picking Lines].[Item No_] 
            JOIN [Wings$Store Price Group] AS "Store Price" ON [Store Price].[Price Group Code] = [Sales Price].[Sales Code] 
            AND [Store Price].[Store] = [Picking Lines].[Shortcut Dimension 1 Code] WHERE [Sales Price].[Starting Date] > [Sales Price].[Ending Date])
            AND [Store Price].[Store] = [Item Ledger].[Location Code] AND [Sales Price].[Item No_] = [Item Ledger].[Item No_] 
            AND [Sales Price].[Variant Code] = [Item Ledger].[Variant Code] AND [Store Price].[Price Group Code] = [Sales Price].[Sales Code]) AS "Retail Price"


, (SELECT   MIN([Purch Rec].[Posting Date]) FROM [Wings$Purch_ Rcpt_ Line] AS "Purch Rec" WHERE [Purch Rec].[No_] = [Item Ledger].[Item No_] AND [Purch Rec].[Variant Code] = [Item Ledger].[Variant Code]) 
    AS "First Rec Date"
, (SELECT   MAX([Purch Rec].[Posting Date]) FROM [Wings$Purch_ Rcpt_ Line] AS "Purch Rec" WHERE [Purch Rec].[No_] = [Item Ledger].[Item No_] AND [Purch Rec].[Variant Code] = [Item Ledger].[Variant Code]) 
    AS "Last Rec Date"
, (SELECT   MAX([Sales Line].[Date]) FROM [Wings$Trans_ Sales Entry] AS "Sales Line" WHERE [Sales Line].[Item No_] = [Item Ledger].[Item No_] AND [Sales Line].[Variant Code] = [Item Ledger].[Variant Code]
    AND [Sales Line].[Store No_] = [Item Ledger].[Location Code]) AS "Last Sold Date"
, (SELECT   CAST(SUM([Value Entry].[Item Ledger Entry Quantity]) AS decimal(18,0)) FROM [Wings$Value Entry] AS "Value Entry" WHERE [Value Entry].[Item No_] = [Item Ledger].[Item No_]
    AND [Value Entry].[Variant Code] = [Item Ledger].[Variant Code] AND [Value Entry].[Location Code] = [Item Ledger].[Location Code] AND [Value Entry].[Posting Date] <= '20161201') AS "Beg. Balance"
, (SELECT   CAST(SUM([Transfer Shipment].[Quantity]) AS decimal(18,0)) FROM [Wings$Transfer Shipment Line] AS "Transfer Shipment" WHERE [Transfer Shipment].[Item No_] = [Item Ledger].[Item No_]
    AND [Transfer Shipment].[Variant Code] = [Item Ledger].[Variant Code] AND [Transfer Shipment].[Transfer-from Code] = [Item Ledger].[Location Code]) AS "Outbound Transfers"
, (SELECT   CAST(SUM([Transfer Receipt].[Quantity]) AS decimal(18,0)) FROM [Wings$Transfer Receipt Line] AS "Transfer Receipt" WHERE [Transfer Receipt].[Item No_] = [Item Ledger].[Item No_]
    AND [Transfer Receipt].[Variant Code] = [Item Ledger].[Variant Code] AND [Transfer Receipt].[Transfer-to Code] = [Item Ledger].[Location Code]) AS "Inbound Transfers"
, (SELECT   CAST(SUM([Purch. Rec.].[Quantity]) AS decimal(18,0)) FROM [Wings$Purch_ Rcpt_ Line] AS "Purch. Rec." WHERE [Purch. Rec.].[No_] = [Item Ledger].[Item No_]
    AND [Purch. Rec.].[Variant Code] = [Item Ledger].[Variant Code] AND [Purch. Rec.].[Location Code] = [Item Ledger].[Location Code]) AS "YTD Purchase Receipts"
, (SELECT   CAST(SUM([Transaction Register].[Quantity]) as decimal(18,0)) FROM [Wings$Trans_ Sales Entry] AS "Transaction Register" 
    WHERE [Item Ledger].[Item No_] = [Transaction Register].[Item No_] AND [Item Ledger].[Variant Code] = [Transaction Register].[Variant Code] 
    AND [Item Ledger].[Location Code] = [Transaction Register].[Store No_]) AS "YTD Sales"  
, (SELECT   CAST(SUM([Transaction Register].[Quantity]) as decimal(18,0)) FROM [Wings$Trans_ Sales Entry] AS "Transaction Register" 
    WHERE [Item Ledger].[Item No_] = [Transaction Register].[Item No_] AND [Item Ledger].[Variant Code] = [Transaction Register].[Variant Code] 
    AND [Item Ledger].[Location Code] = [Transaction Register].[Store No_] AND [Transaction Register].[Date] >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1, 0) 
    AND [Transaction Register].[Date] < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) , 0)) AS "Last Month Sales"
, (SELECT   CAST(SUM([Transaction Register].[Quantity]) as decimal(18,0)) FROM [Wings$Trans_ Sales Entry] AS "Transaction Register" 
    WHERE [Item Ledger].[Item No_] = [Transaction Register].[Item No_] AND [Item Ledger].[Variant Code] = [Transaction Register].[Variant Code] 
    AND [Item Ledger].[Location Code] = [Transaction Register].[Store No_] AND [Transaction Register].[Date] >= DATEADD(DAY, 1-DAY(GETDATE()), GETDATE()) 
    AND [Transaction Register].[Date] < EOMONTH(GETDATE())) AS "Current Month Sales"
, (SELECT   CAST(SUM([Transfer Line].[Outstanding Quantity]) AS decimal(18,0)) FROM [Wings$Transfer Line] AS "Transfer Line" WHERE [Transfer Line].[Item No_] = [Item Ledger].[Item No_]
    AND [Transfer Line].[Variant Code] = [Item Ledger].[Variant Code] AND [Transfer Line].[Transfer-to Code] = [Item Ledger].[Location Code]) AS "Current In-Transit to Store"
, (SELECT   CAST(SUM([Item Ledger].[Quantity]) as decimal(18,0))) AS "Current on Hand"
, (SELECT   CAST(SUM([Value Entry].[Item Ledger Entry Quantity]) as decimal(18,0)) FROM [Wings$Value Entry] AS "Value Entry" WHERE [Value Entry].[Item No_] = [Item Ledger].[Item No_]
    AND [Value Entry].[Variant Code] = [Item Ledger].[Variant Code] AND [Value Entry].[Location Code] = [Item Ledger].[Location Code] AND [Value Entry].[Location Code] LIKE '9%') AS "Whse Inv."
, (SELECT   CAST(SUM([Value Entry].[Item Ledger Entry Quantity]) as decimal(18,0)) FROM [Wings$Value Entry] AS "Value Entry" WHERE [Value Entry].[Item No_] = [Item Ledger].[Item No_]
    AND [Value Entry].[Variant Code] = [Item Ledger].[Variant Code] AND [Value Entry].[Location Code] = [Item Ledger].[Location Code] AND [Value Entry].[Location Code] NOT LIKE '9%') AS "Store Inv."
, (SELECT   CAST(SUM([Purchase Line].[Outstanding Quantity]) as decimal(18,0)) FROM [Wings$Purchase Line] AS "Purchase Line" WHERE  [Item Ledger].[Item No_] = [Purchase Line].[No_] 
    AND [Purchase Line].[Location Code] = [Item Ledger].[Location Code] AND [Purchase Line].[Variant Code] = [Item Ledger].[Variant Code]) AS "Qty. on PO"
FROM    [Wings$Item Ledger Entry] AS "Item Ledger", [Wings$Store Price Group] AS "Store Price" WHERE [Item Ledger].[Location Code] = [Store Price].[Store] AND [Item Ledger].[Location Code] = [Store Price].[Store]
GROUP BY    [Item Ledger].[Location Code], [Item Ledger].[Item No_], [Item Ledger].[Variant Code], [Item Ledger].[Item Category Code], [Item Ledger].[Product Group Code], [Store Price].[Price Group Code], [Store Price].[Store]

0 个答案:

没有答案