Sql server 查询以获取财政年度月份之间的数据
我必须单独显示一个财政年度所有月份的费用报告。 目前,我正在获取所有费用名称的特定月份的数据以及总和(金额),但我希望获取每个月的数据:- 例如:Sql server 查询以获取财政年度月份之间的数据,sql-server,Sql Server,我必须单独显示一个财政年度所有月份的费用报告。 目前,我正在获取所有费用名称的特定月份的数据以及总和(金额),但我希望获取每个月的数据:- 例如: Name | Amount | Month Tea | 3600 | Apr Tea | 8500 | May Tea | 3600 | June Tea | 300 | July Te
Name | Amount | Month
Tea | 3600 | Apr
Tea | 8500 | May
Tea | 3600 | June
Tea | 300 | July
Tea | 360 | Aug
Tea | 600 | Sep
Tea | 870 | Oct
请帮助查询如何获取数据。
谢谢您能粘贴表结构吗?您能提供表架构吗?此外,根据您的示例,似乎每个月只需支付一种费用(即,在4月份仅支付茶,可能仅支付糖),请对此进行确认。如果是这种情况,我相信名称对于您的查询是不可逆的(即,字段仅用于选择,而不影响记录选择)。因此,您可以删除上面示例中的该字段,以关注实际问题。是的,尼廷,您是对的,我将从代码中传递NameID,以获取该特定“名称”的所有月份的数据。嘿,洛伦兹,我尝试了此解决方案,但出现了错误:“列'dateColumn'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”。“此外,我将传递NameID以获取所有月份的特定费用名称的数据。您看到前面的答案了吗?虽然你的代码可能会工作,但你不觉得这太复杂了吗?如果回答者解释一下他的代码的作用,也许会更好。
SELECT Name, SUM(Amount) AS Amount, DATENAME(month, DateColumn) AS Month
FROM Table
GROUP BY Name, DATENAME(month, DateColumn)
DECLARE @FinYearStart DATETIME
DECLARE @FinYearEnd DATETIME
SET @FinYearStart = DATEADD(dd,0, DATEDIFF(dd,0, DATEADD( mm, -(((12 + DATEPART(m, getDate())) - 4)%12), getDate() ) - datePart(d,DATEADD( mm, -(((12 + DATEPART(m, getDate())) - 4)%12),getDate() ))+1 ) )
SET @FinYearEnd = DATEADD(SS,-1,DATEADD(mm,12,@FinYearStart))
SELECT SUM(AMOUNT) AS Amount,
DATENAME(month, DATECOLUMN) AS Month,
DATEPART(month, DATECOLUMN) AS Month1
FROM TABLENAME where DATECOLUMN between @FinYearStart
AND @FinYearEnd GROUP BY
DATENAME(month, DATECOLUMN),DATEPART(month, DATECOLUMN)
order by Month1