3

フィルターごとにすべての購入インデントと、これらのインデント行の対応する購入行を表示する必要があるレポートを作成しています。私の条件に従って購入行が見つからない場合は、NULL 値を返す必要があります。しかし、レポートには、購買明細にレコードがないインデントは表示されません。INH、INL、PL、PH の 4 つのテーブルに参加しています。クエリを以下に示します。

SELECT
    INH.No_
    ,INH.[Approved Date]
    ,INH.Indentor
    ,INL.No_ AS ItemCode
    ,INL.description
    ,INL.Description2
    ,INL.Req_Quantity
    ,INL.[Unit of Measure]
    ,PL.[Document No_]
    ,PH.[Order Date]
    ,PL.Quantity AS OrderedQuantity
    ,PL.[Quantity Received]
FROM [ICTL | HYDERABAD$Indent Header] AS INH
INNER JOIN [ICTL | HYDERABAD$Indent Line] AS INL ON INH.No_ = INL.[Document No_]
LEFT OUTER JOIN [ICTL | HYDERABAD$Purchase Line] AS PL ON INL.[Document No_] = PL.[Indent No_] AND INL.[Line No_] = PL.[Indent Line No_]
LEFT OUTER JOIN [ICTL | HYDERABAD$Purchase Header] AS PH ON PL.[Document No_] = PH.No_
WHERE (UPPER(INH.Indentor) = UPPER(@Name)
    OR @Name IS NULL)
    AND (INL.No_ <> '')
    AND (INH.[Approved Date] >= @StartDate
    OR @StartDate IS NULL)
    AND (INH.[Approved Date] <= @EndDate
    OR @EndDate IS NULL)
    AND (PL.[Document Type] = 1)
ORDER BY ItemCode
4

2 に答える 2

1

これはあなたに役立つ可能性があります-

SELECT
      INH.No_
    , INH.[Approved Date]
    , INH.Indentor
    , INL.No_ AS ItemCode
    , INL.description
    , INL.Description2
    , INL.Req_Quantity
    , INL.[Unit of Measure]
    , PL.[Document No_]
    , PH.[Order Date]
    , PL.Quantity AS OrderedQuantity
    , PL.[Quantity Received]
FROM [ICTL | HYDERABAD$Indent Header] INH
JOIN [ICTL | HYDERABAD$Indent Line] INL ON INH.No_ = INL.[Document No_]
LEFT JOIN [ICTL | HYDERABAD$Purchase Line] PL ON INL.[Document No_] = PL.[Indent No_] AND INL.[Line No_] = PL.[Indent Line No_]
LEFT JOIN [ICTL | HYDERABAD$Purchase Header] PH ON PL.[Document No_] = PH.No_
WHERE UPPER(INH.Indentor) = UPPER(ISNULL(@Name, INH.Indentor))
    AND INL.No_ <> ''
    AND INH.[Approved Date] BETWEEN ISNULL(@StartDate, '19000101') AND ISNULL(@EndDate, '30000101')
    AND ISNULL(PL.[Document Type], 1) = 1
ORDER BY ItemCode
于 2013-08-02T07:11:38.643 に答える