一番売れている製品を探し、その情報を使って他の製品を見つけようとしています。ただし、最近、情報をデータベースの新しいテーブルに移動しました。新しいテーブルには新しいアイテム番号がありますが、古いオリジナルの一部のみです。古いテーブルに参加してすべてを取得すると、新しいテーブルには古いテーブルよりも多くのデータが含まれているため、それらは大幅に倍増します。
私は本当に言葉が多くて混乱しているので、ここに例を示します:
ItemName ItemNo ItemNo2 Size Age Type Count Sales YearNew
Item1 AA123 AA123 ST NULL Accessories 1234 12334.56 2008
Item2 BB123 BB123 ST Adult Accessories 5643 98765.43 2006
Item3 CC123 CC123 ST NULL Accessories 1111 11111.11 2007
Item3b CC123 CC123 ST Adult Accessories 1111 11111.11 2007
Item4 DD123 DD123 L Kids Costumes 333 7891.12 2011
Item4 DD123 DD123 L Teen Costumes 333 7891.12 2011
(これらの数字は明らかに作り話です)
Item3 と Item3b の唯一の違いは、ItemName と Age であることに注意してください。他のすべては同じです。しかし、それは異なり、すべてのフィールドでグループ化しているため、それらを 2 つのほとんど重複する行に分割しています。
ItemNo 列と ItemNo2 列を結合する方法はありますか? またはこれを解決する別の方法はありますか?
ただし、タイプまたは年齢を除いて、すべての列が同じである状況があることにも注意してください。この例の DD123 は、Age を除くすべての領域で同じであるため、同様に 2 つの行に分割されます。
それ以外の場合は、ItemName を除いてすべて同じです。それは至る所で異なります。
プログラミングに、彼らが残した古い項目番号を新しいテーブルに単純に追加するように依頼するように提案されました。それが最善の方法でしょうか、それとも私ができることはありますか?
データベースへのアクセスは読み取り専用なので、自分で変更を加えることはできません。
楽しみのために、私が現在使用しているクエリを次に示します。
select PM.ProductMasterName as ItemName,PM.ItemNumber as ItemNo,
op.ItemNumber_obsolete as ItemNo2,
OP.Size_obsolete as Size,Age.AgeSegment as Age,
PT.ProductTypeDescription as Type,PM.Price,
COUNT(PM.ItemNumber) as 'Count',
(PM.Price*COUNT(PM.ItemNumber)) as Sales,
YEAR(PS.DateCreated) as YearNew
from dbo.tblOrder O with (nolock)
left outer join dbo.tblOrderProduct OP with (nolock)
on O.OrderID=op.OrderID
left outer join dbo.tblProductSize PS
on OP.ItemNumber_obsolete=PS.ItemNumber_obsolete
and OP.Size_obsolete=PS.Size_obsolete
left outer join Product.ProductMaster PM with (nolock)
on PM.ItemNumber=OP.ItemNumber_obsolete
and PM.Price=OP.Price
left outer join Product.ProductType PT
on PM.ProductTypeID=PT.ProductTypeID
left outer join Product.AgeSegmentToProductMaster ASPM
on PM.ProductMasterID=ASPM.ProductMasterID
left outer join Product.AgeSegment Age
on ASPM.AgeSegmentID=Age.AgeSegmentID
where O.OrderDate >= '2012-01-01'
and O.OrderDate < '2013-01-01'
group by PM.ProductMasterName,PM.ItemNumber,op.ItemNumber_obsolete,
OP.Size_obsolete,PM.Price,Age.AgeSegment,
PT.ProductTypeDescription,YEAR(PS.DateCreated)
order by Sales desc