我试图找到我们最畅销的产品,然后使用这些信息来寻找其他东西。但是,我们最近将信息移到了数据库中的一个新表中。新表有新的项目编号,但只有一些旧的原件。当我加入旧表获取所有数据时,它们翻了很多倍,因为新表的数据比旧表多。
我真的很罗嗦和困惑,所以这里有一个例子:
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 除外,这会导致它也分成两行。
其他时候,除了 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