0

発注書のレポートを実行すると、レポートで製品コードのレコードが重複します。

たとえば、発注書が P000976 の場合、レポートでは製品コードが 1 回だけ表示されるはずなのに 2 回表示されます。45-5540 が 2 回表示されます。

P000976 09-17-2012 15,040.00 15,040.00 0.00
45-5540 "Lordotic 子宮頸部スペーサー 10mm Lordotic 子宮頸部スペーサー 10mm" 20 20 0
45-5540 "Lordotic 子宮頸部スペーサー 10mm

レポートの SQL を SQL サーバーに配置し、コードが追加の製品コードを引き起こしている場所を確認して SQL を実行すると、SQL 内の次の行になります。

q.distpartno = p.distpartno で all_product_codes_VW p に参加

select q.specialrequirement
, q.distpartno
, q.toproduce
, q.prodbegindate
, q.distributor
, rc.report_category_name
, s.productperpo
, r.ebi_released
, w.ebi_in_WIP
, p.distproductname
, tp.typeprefixdetail
, tp.cost
, '1' as ReportTotals

from all_required_vw q
left join all_shipped_grafts_new_VW s on (q.distpartno = s.distpartno and  q.specialrequirement = s.ponumber)
left join all_released_Grafts_VW r on q.distpartno = r.distpartno
left join all_in_WIP_VW w on q.distpartno = w.distpartno
join all_product_codes_VW p on q.distpartno = p.distpartno
join setup_tissue_prefix tp on q.typenumber = tp.typeprefix
join setup_report_category_1 rc on q.distributor = rc.report_category_id

where q.prodbegindate < @enddate
           and q.completed = '0'
            and rc.report_category_name  like  '%' + isnull(@tcustomer, '') + '%'
order by q.prodbegindate, p.distproductname

これは、結合によって複製が作成されるビューの SQL です。

SELECT COUNT_BIG(*) AS BIG, DistPartNo, DistProductName, Distributor, UMTBProductCode
FROM  dbo.Setup_Distributor_Product_info
WHERE (Distributor <> '7') OR (Distributor IS NULL)
GROUP BY DistPartNo, DistProductName, Distributor, USSAProductCode 
4

2 に答える 2

0

これらの行をコメントアウトすると

--, p.distproductname

--join all_product_codes_VW p on q.distpartno = p.distpartno

クエリは、distpartno ごとに 1 つの行を返しますか? はいの場合、 all_products_code_VW ビューが複数の行を引き起こしていることは正しいです。

これら 2 つのクエリを実行し、それぞれに含まれる行の数を調べると、その理由についての手がかりが得られます。

Select * from all_required_vw where distpartno = '45-5540'
Select * from all_product_codes_VW where distpartno = '45-5540'

私の推測では、distpartno だけに参加するだけでは、独自の結果を得るには十分ではありません。同じ部品に対して複数の販売業者が存在する場合や、同じ部品番号に対して複数の製品名が存在する場合があります。たとえば、異なる製品で同じ部品番号を使用する異なる販売業者が存在する場合があります。

于 2013-02-26T00:22:02.773 に答える
0

この GROUP BY 句の可能性

GROUP BY DistPartNo, DistProductName, Distributor, USSAProductCode 

これを交換する必要があります

GROUP BY DistPartNo, DistProductName, Distributor, UMTBProductCode
于 2013-02-26T09:32:33.557 に答える