基于计数的条件和

时间:2013-10-16 03:14:10

标签: sql sql-server

我已经在论坛中回顾了各种“条件总和”问题,但没有一个与我想要做的完全匹配:

在数据库中,有DateStore#Item#%Total Sales。在某些情况下,同一日期的相同项目#可能会被赋予%Total Sales的多个值。 (出于某种原因,这是一个很少发生的有效业务场景,但它会发生。)

仅在这种情况下,要求是将两个值合并为一行。因此,如果Item#123有一行值为.05%,另一行值为.08%,我需要将这两个值合并为一行,其中Item#123的%Total为0.13%。仅当项目分配了多个百分比时,才应将这些百分比相加。否则,如果项目#只分配了一个百分比值,我们只想查看该值。

我无法弄清楚如何做到这一点。基本上,我想实现这样工作的逻辑:

SELECT Date, Store#, Item#, 
CASE WHEN Count(%Total Sales) >1 THEN Sum(%Total Sales) 
ELSE %Total Sales
END

FROM (some tables and joins)
GROUP BY Date, Store#, Item#

但是,我不知道如何制作它以便我没有语法错误(此查询会产生错误)。

任何帮助都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您按Date, Store#, Item#分组,则返回多行的唯一值是同一日期内同一商品的总销售额具有多个值的值。

因此,对项目进行分组就足够了。

SELECT Date, Store#, Item#, Sum(%Total Sales) 
FROM (some tables and joins)
GROUP BY Date, Store#, Item#

答案 1 :(得分:0)

为什么不进行更新而不是在表格中输入新值。 而不是在插入后操纵数据。

我相信这是一个更好的主意,您可以检查现有日期并更新当时的百分比。

不可能吗?