我已将表格中的所有日期转换为YYYY / MM / 01,但我剩下的25个左右的日期都是相同的,我只是想将它们组合在一起而且我不能弄清楚该怎么做。我对SQL很新,并希望有人能指出我正确的方向。
非常感谢!
SELECT
DATEFROMPARTS(YEAR(ReportedDate), MONTH(ReportedDate), 1) AS Date, SUM(Sales) Sales
FROM
dbo.Sales
WHERE
YEAR(ReportedDate) = 2018 AND MONTH(ReportedDate) = 01
GROUP BY
ReportedDate
答案 0 :(得分:0)
因为您按ReportedDate进行分组,所以即使您没有在SELECT子句中选择ReportedDate,也会为每个ReportedDate获取一条记录。将其视为数据中的隐藏列。相反,请尝试按select语句中的函数进行分组。
SELECT
DATEFROMPARTS(YEAR(ReportedDate), MONTH(ReportedDate), 1) AS Date, SUM(Sales) Sales
FROM
dbo.Sales
WHERE
YEAR(ReportedDate) = 2018 AND MONTH(ReportedDate) = 01
GROUP BY
DATEFROMPARTS(YEAR(ReportedDate), MONTH(ReportedDate), 1)
答案 1 :(得分:0)
作为查询的替代方案,我建议您使用EOMONTH功能。您不需要使用额外的日期函数。而且我认为最好显示月份的最后一天比每月显示总数的第一天
SELECT
EOMONTH(ReportedDate) AS Date, SUM(Sales) Sales
FROM
dbo.Sales
WHERE
EOMONTH(ReportedDate) = EOMONTH(GETDATE(), -1)
GROUP BY
EOMONTH(ReportedDate)
注意:
EOMONTH(GETDATE(), -1)
获得上个月的最后一天DATEADD(DD, 1, EOMONTH(ReportedDate, -1))
获取第一天的第一天