如何在SQL查询中汇总上个月的值和当前月份值

时间:2016-01-06 10:18:28

标签: sql sql-server tableau tableau-server

请帮我解决这个问题。我必须编写一个查询来获取上个月值和当前月份值的总和,但无法得到解决方案。

以下是我需要结果的实际计数列值的参考总和的图像。

enter image description here

4 个答案:

答案 0 :(得分:0)

在Oracle中,您将使用以下内容,在case语句中可能不完全正确:

Select 
      Site, 
      sum(value * (case (date_transaction > trunc(sysdate, 'MM') then 1 else 0 end))
        volume_current_month
    from myTable
    where date_transaction between add_months(trunc(sysdate,'MM'),-1) and sysdate
    group by site

上个月使用另一个案例陈述和ADD_MONTHS或多或少相同。

答案 1 :(得分:0)

在Tableau中有两种方法可以执行此操作:

第一道。

Under Analysis --> Total --> Add All SubTotals .

第二种方式:

将计算字段Total_event创建为:

WINDOW_SUM(SUM([Event Count]))

将Window_sum计算为COMPUTE USING EVENT NAME

答案 2 :(得分:0)

在画面中 - >创建一个计算字段 - >

//这是上个月的

if [date] >= DATE("01" +"-" + (Month(TODAY())-1) +"-" + YEAR(TODAY()))

and [date] <= DATE("31" +"-" + (Month(TODAY())-1) +"-" + YEAR(TODAY()))

//if the month has 30 or 28 days it will check that there is no 31 and return null

then

sum([Value])

end

//当月 - &gt;

if Month([date]) = Month(TODAY()) then

sum([Value])

end

您将在2个字段中返回上个月的总和和当前月份的总和,然后您可以根据需要使用它们。

在sql端,您可以使用

上个月 - &gt;

select sum(value) from table_name t where DATE_PART('month',t.date)=DATE_PART('month',TIMESTAMPADD(mm,-1,GETDATE()))

当前月份 - &gt;

select sum(value) from table_name t where DATE_PART('month',t.date)=DATE_PART('month',GETDATE()))

答案 3 :(得分:0)

如果您可以使用sql并且您实际上需要上个月而不仅仅是EventName总结的所有月份,那么您可以使用LAG。我假设您使用EventName进行求和,并且只需要当前的EventName和之前的EventNAme

WITH Summed
AS
(
SELECT * ,
LAG(EventCount) OVER (Partition BY EventName ORDER BY trialmonth) as PrevEvent
FROM dbo.Table1 
)

    SELECT *,
    SUM(PrevEvent+EventCount) AS SummedCount

     FROM summed
     GROUP BY   Site
          ,TrialMonth
          ,EventName
          ,EventCount
          , PrevEvent

这将产生这样的输出

Site    TrialMonth  EventName   EventCount  PrevEvent   SummedCount
12101   2001-10-15  Actual Count    4   NULL    NULL
12101   2001-10-15  Projected Count 8   NULL    NULL
12101   2001-11-15  Actual Count    6   4   10
12101   2001-11-15  Projected Count 9   8   17
12101   2001-12-15  Actual Count    0   6   6
12101   2001-12-15  Projected Count 10  9   19

http://sqlfiddle.com/#!6/8253f0/2