Sql 季度金额的计算
我有一个问题,我想合并我的表数据通过日期,所有信息提供给表 如果聚合=四分之一 我的桌子 表-1 我想要这样的结果Sql 季度金额的计算,sql,sql-server,sql-server-2008,tsql,sql-server-2005,Sql,Sql Server,Sql Server 2008,Tsql,Sql Server 2005,我有一个问题,我想合并我的表数据通过日期,所有信息提供给表 如果聚合=四分之一 我的桌子 表-1 我想要这样的结果 Amount | Date | Aggregation 300 | 2013-03-01 | Quaterly 600 | 2013-06-01 | Quaterly 900 | 2013-09-01 | Quaterly 1200 | 2013-12-01 | Quaterly 检查这里这是一个财务季度+总和 如果您的季度只能
Amount | Date | Aggregation
300 | 2013-03-01 | Quaterly
600 | 2013-06-01 | Quaterly
900 | 2013-09-01 | Quaterly
1200 | 2013-12-01 | Quaterly
检查这里这是一个财务季度+总和
如果您的季度只能通过日历而不是会计年度进行更改,您可以尝试以下方法:
SELECT amount,
Cast(Cast(mydate / 10 * 10000 + ( mydate%10 ) * 300 + 1 AS VARCHAR) AS
DATE) AS
MyDate,
aggregation
FROM (SELECT Sum(amount) AS Amount,
Datepart(yyyy, mydate) * 10 + Datepart(qq, mydate) AS MyDate,
Max(aggregation) AS Aggregation
FROM table1
GROUP BY Datepart(yyyy, mydate) * 10 + Datepart(qq, mydate)) a
ORDER BY 2
第一次计算子查询中的所有聚合或与另一个答案中的构造一起使用时。日期是用年份键计算的,如果您不需要年份的结果,可以删除“datepartyyyy,MyDate*10+”。之后,将季度数和特定年份合并。请不要将“MyDate/10*10000”部分替换为“MyDate*1000”,我们需要减少不必要的数字以生成正确的日期格式。我没有季度概念,所以我可以找到任何解决方案@Nagarajs此解决方案帮助我,但我有一个问题,如果我需要季度最后日期而不是第一个日期,那么我该怎么办?假设季度日期为2013年1月1日,我希望2014年1月3日@Dholakiyaankit定制您的选择或将需求静态化,不要更改it@dholakiyaankit:怎么做?
;With Totals as (
SELECT SUM(Amount) as Total,
DATEADD(quarter,DATEDIFF(quarter,0,date),0) as RoundQuarter
FROM dbo.MyData AS om
GROUP BY
DATEADD(quarter,DATEDIFF(quarter,0,date),0)
)
select
Total,
DATEPART(year,RoundQuarter) -
CASE WHEN DATEPART(quarter,RoundQuarter) = 1 THEN 1 ELSE 0 END as FinancialYear,
CASE WHEN DATEPART(quarter,RoundQuarter) = 1 THEN 4
ELSE DATEPART(quarter,RoundQuarter) - 1 END as FinancialQuarter
from
Totals
SELECT amount,
Cast(Cast(mydate / 10 * 10000 + ( mydate%10 ) * 300 + 1 AS VARCHAR) AS
DATE) AS
MyDate,
aggregation
FROM (SELECT Sum(amount) AS Amount,
Datepart(yyyy, mydate) * 10 + Datepart(qq, mydate) AS MyDate,
Max(aggregation) AS Aggregation
FROM table1
GROUP BY Datepart(yyyy, mydate) * 10 + Datepart(qq, mydate)) a
ORDER BY 2