SQL语句-希望将每日日期汇总并显示为年份
例如,我总结了两年的数据 日期|成分|成本|金额|成本|份额|金额| 我在看2012年和2013年两年的数据, 我想把所有的总数加起来,所以我只有两行,一行是2012年的,一行是2013年的。如何编写一个SQL语句来查看日期,但只显示4位数的年份和8位数的每日日期。我怀疑它的总和部分将通过计算这些列的总和来处理,所以我真的在寻找如何将每日日期转换为4位数年份的帮助。SQL语句-希望将每日日期汇总并显示为年份,sql,content-query-rollup,Sql,Content Query Rollup,例如,我总结了两年的数据 日期|成分|成本|金额|成本|份额|金额| 我在看2012年和2013年两年的数据, 我想把所有的总数加起来,所以我只有两行,一行是2012年的,一行是2013年的。如何编写一个SQL语句来查看日期,但只显示4位数的年份和8位数的每日日期。我怀疑它的总和部分将通过计算这些列的总和来处理,所以我真的在寻找如何将每日日期转换为4位数年份的帮助。 非常感谢您的帮助。定义范围/分组表。 select DATEPART(year,[Date]) [Year] , sum(Ingr
非常感谢您的帮助。定义范围/分组表。
select DATEPART(year,[Date]) [Year]
, sum(Ingredient_cost_Amount) Total
from @table
group by DATEPART(year,[Date])
在大多数RDBMS中,应使用类似于以下内容的功能:
SELECT Grouping.id, SUM(Ingredient.ingredient_cost_amount) AS Ingredient_Cost_Amount,
SUM(Ingredient.cost_share_amount) AS Cost_Share_Amount
FROM (VALUES (2013, DATE('2013-01-01'), DATE('2014-01-01')),
(2012, DATE('2012-01-01'), DATE('2013-01-01'))) Grouping(id, gStart, gEnd)
JOIN Ingredient
ON Ingredient.date >= Grouping.gStart
AND Ingredient.date < Grouping.gEnd
GROUP BY Grouping.id
选择Grouping.id,SUM(配料.配料成本金额)作为配料成本金额,
金额(成分、成本、份额、金额)作为成本、份额、金额
自(值(2013年,日期('2013-01-01'),日期('2014-01-01')),
(2012年,日期('2012-01-01')、日期('2013-01-01'))分组(id、gStart、gEnd)
加入成分
ON.date>=Grouping.gStart
和component.date
(DATE()
和相关转换函数严重依赖于数据库。一些RDBMS不支持以这种方式使用值,尽管有其他方法可以创建虚拟分组表)
请参阅,了解我为何对范围使用专用上限
以这种方式使用范围表可能会允许db使用索引来帮助聚合。这有多大帮助取决于一系列其他因素,如使用的特定RDBMS。您使用的是哪个数据库?