2017-01-10 85 views
0

我有一个包含多个商店的商品销售的表,请参阅下面的示例表。SQL如何计算具有相似值的多个列

 
    Store Item Price Cost Profit 
------- ------ ------- ------ -------- 
    ABC  Beer  5  3  2 
    ABC  Beer  5  3  2 
    ABC  Beer  4  3  1 

我需要计算与同类价格的商品,所以导致了上面的表格应类似于...

 
    Store Item Count Price Cost Profit 
------- ------ ------- ------- ------ -------- 
    ABC  Beer  2  5  3  2 
    ABC  Beer  1  4  3  1 

我尝试以下没有成功的SQL查询...

SELECT Store,Item,Count(Price),Price,Cost,Profit 
FROM Table 
GROUP BY Store,Item,Price,Cost,Profit 

想法?

+2

您的查询是正确的,并且正在返回您的预期结果。它给你什么? – GurV

+0

我得到3行,每行计数为1 – neualex

+2

该查询是正确的。在你的varchar列中必须有一些隐藏的字符,因为我现在已经在我自己的系统上对它进行了测试并产生了正确的输出。 – GurV

回答

1

您声明我需要计算具有类似价格的商品。根据您的示例数据,您的查询可以工作。

declare @table table (Store varchar(3), Item varchar(16), Price int, Cost int, Profit int) 
insert into @table (Store, Item, Price, Cost, Profit) 
values 

('ABC','Beer',5,3,2), 
('ABC','Beer',5,3,2), 
('ABC','Beer',4,3,1) 

SELECT 
    Store, 
    Item, 
    Count(Price) as CT, 
    Price, 
    Cost, 
    Profit 
FROM @table 
GROUP BY Store,Item,Price,Cost,Profit 

然而,如果CostProfit列各Store/Item/Counttuple不同的是,您的分组就不会显示你想要的结果。

declare @table2 table (Store varchar(3), Item varchar(16), Price int, Cost int, Profit int) 
insert into @table2 (Store, Item, Price, Cost, Profit) 
values 

('ABC','Beer',5,3,2), --notice change in cost and profit 
('ABC','Beer',5,2,1), --notice change in cost and profit 
('ABC','Beer',4,3,1) 

SELECT 
    Store, 
    Item, 
    Count(Price) as CT, 
    Price, 
    Cost, 
    Profit 
FROM @table2 
GROUP BY Store,Item,Price,Cost,Profit 

假设您的真实数据,这样的话 - 那就是你CostProfit是不同的。因此,您需要删除SELECTGROUP BY中的那些列以回答您的问题,我需要计算具有类似价格的项目。 另外还有,您可能还想从SELECTGROUP BY中删除Store列。

SELECT 
    Store, 
    Item, 
    Count(Price) as CT, 
    Price 
FROM @table2 
GROUP BY Store,Item,Price 
+1

价格可能会改变,通常降价或原价,成本永远不会改变。我想我必须使用2个表来获得我需要的结果。第一个表格,商店/项目/计数/价格,第二个表格包含成本/利润。 – neualex

+0

@neualex正常化您的数据,因为您建议通常是一个好主意 – scsimon

+0

如果我只有一个商店在桌子上,如ABC,类似价格的计数是唯一的商店正确的,但如果我有至少3个不同的商店(S1,S2,S3),他们都有类似的价格,我如何计算每家商店的类似价格?相同的查询计算所有商店的类似价格,而不是每个商店。如果需要,我可以提供数据。 – neualex

相关问题