如何在SQL查询中求上月值和当月值之和
请帮我解决这个问题。我必须编写一个查询来获取上个月值和当前月值的总和,但无法获得解决方案 这是一个图像,用于参考实际计数列值的总和,我需要结果如何在SQL查询中求上月值和当月值之和,sql,sql-server,tableau-api,Sql,Sql Server,Tableau Api,请帮我解决这个问题。我必须编写一个查询来获取上个月值和当前月值的总和,但无法获得解决方案 这是一个图像,用于参考实际计数列值的总和,我需要结果 在Oracle中,您将使用以下内容,但在案例陈述中可能不完全正确: Select Site, sum(value * (case (date_transaction > trunc(sysdate, 'MM') then 1 else 0 end)) volume_current_month fr
在Oracle中,您将使用以下内容,但在案例陈述中可能不完全正确:
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
使用另一个case语句时,上个月大致相同,在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
使用另一个case语句和
ADD_MONTHS
在Tableau中,上个月大致相同,有两种方法可以做到这一点:
第一条路
Under Analysis --> Total --> Add All SubTotals .
第二种方式:
创建一个计算字段Total\u event
如下:
WINDOW_SUM(SUM([Event Count]))
使用事件名称计算窗口总和在表中有两种方法: 第一条路
Under Analysis --> Total --> Add All SubTotals .
第二种方式:
创建一个计算字段Total\u event
如下:
WINDOW_SUM(SUM([Event Count]))
在tableau->创建计算字段-> //这是上个月的
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
您将有两个字段返回上个月的总和和本月的总和,然后您可以根据需要使用它们
在sql端,您可以使用
上个月->
select sum(value) from table_name t where DATE_PART('month',t.date)=DATE_PART('month',TIMESTAMPADD(mm,-1,GETDATE()))
当月->
select sum(value) from table_name t where DATE_PART('month',t.date)=DATE_PART('month',GETDATE()))
在tableau->创建计算字段-> //这是上个月的
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
您将有两个字段返回上个月的总和和本月的总和,然后您可以根据需要使用它们
在sql端,您可以使用
上个月->
select sum(value) from table_name t where DATE_PART('month',t.date)=DATE_PART('month',TIMESTAMPADD(mm,-1,GETDATE()))
当月->
select sum(value) from table_name t where DATE_PART('month',t.date)=DATE_PART('month',GETDATE()))
如果您可以使用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
如果您可以使用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
您希望在Tableau或SQL中使用此选项吗?在Tableau中,我们可以很容易地实现这一点。请在Tableau中为我提供解决方案。研究
groupbyrollup
您希望在Tableau或SQL中实现这一点吗?在Tableau中,我们可以很容易地实现这一点。请在Tableau中为我提供解决方案。研究groupby rollup
即使有提示,也很难获得正确的格式。抱歉。通常情况下,当出现时会出现这种情况,但Oracle可能会接受这种情况?感谢您的回复,我将尝试。即使有提示,也很难正确获取格式。抱歉。通常情况下,如果,这将是情况,但Oracle可能会接受此情况?感谢您的回复,我将尝试。我尝试了此操作,但结果不是预期的,请参阅链接-“”,我已请求表中的问题,请检查问题是“如何查找每个站点与上个月的差异”我只需要本月和上个月的实际计数和或差。@KannanAthmanathan您得到的结果是什么?我正按照你的要求得到想要的结果。您可能会共享您的问题的公共链接。我曾尝试过此操作,但结果不是预期的,请参考链接-“”,我已要求在tableau中解决问题。请检查问题是“如何找到每个站点与上个月的差异”我只需要本月和上个月的实际计数和或差。@KannanAthmanathan您得到的结果是什么?我正按照你的要求得到想要的结果。您可以共享问题的公共链接。