SQL查询问题

时间:2009-09-30 01:04:56

标签: sql mysql

我正在尝试在以前从未做过的查询中执行某些操作。它可能需要变量,但我从来没有这样做过,而且我不确定它是否存在。

我想要的是获得销售清单,首先按联盟会员分组,然后按月份分组。

我能做到这一点,但这就是扭曲...我不想要这个月,而是第1个月,第2个月,第3个月......

这些不是Jan,feb,march,而是自首次销售之日起的月数。

这在查询中是否可行,或者我是否需要在我的代码中执行此操作。

哦,mysql 5.1.something ......

2 个答案:

答案 0 :(得分:1)

当然,只需在SQL中编写一个表达式,生成自第一次销售以来的月数(您是指该联盟的第一次销售吗?如果是,您需要一个子查询) 既然你说你想要一个 列表 的销售额,我认为你真的不想“分组依据”affilaite和monthcount,你只想要排序或订购通过这些值)

如果您想要销售数据的平均销售额,销售额或其他汇总功能,那么您将进行“分组依据”......

我认为您不必担心按月数排序,您可以简单地按每个销售日期与每个会员的最后销售日期之间的差异进行排序。 (如果您想在销售日期排序后应用第三个排序规则,那么您需要更加小心。)

   Select * From Sales S
   Order By Affiliate, 
         SalesDate - (Select Min(SalesDate)
                      From Sales 
                      Where Affiliate = S.Affiliate)

或者,如果你真的需要按月差异

   Select * From Sales S
   Order By Affiliate, 
         Month(SalesDate) - 
              (Select Month(Min(SalesDate))
               From Sales 
               Where Affiliate = S.Affiliate)

答案 1 :(得分:0)

如果您使用我喜欢称之为“SQL体操”的标准SQL,那么可能。可以使用子查询来完成。

但它看起来非常丑陋,很难维护,而且它真的不值得。使用包装SQL的许多编程语言之一(例如PL / SQL)或者甚至可以调用SQL的通用语言(例如Python),你会好得多。

结果将使用两种语言,但比只用SQL编写的内容更容易理解。