在我的表格中,我有一个列名Transdate
,其中包含格式为dd-mm-yyyy的交易日期。我正在使用图表来明智地显示交易月份,
我使用了查询。
SELECT
[p].Transdate AS [Month/Year] ,
Sum([p].Litres) [Total Sale]
FROM CustomerPoints AS [p]
INNER JOIN Customers AS [c]
ON [c].[CustomerID]=[p].[CustomerID]
WHERE
[p].Transdate BETWEEN '2013-01-20' AND '2015-03-05'
AND [c].DistributorID = '1'
GROUP BY [p].Transdate
ORDER BY [p].Transdate ASC
以上查询以日期形式提供数据
Month/Year Total Sale
1-02-2012 500
2-02-2012 500
我想要
Month/Year Total Sale
02-2012 1000
即我希望查询计算月份(总销售额)明智而不是日期。
答案 0 :(得分:1)
尝试SQL Datepart()/ Month()/ Year()
SELECT
CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50)) AS [Month/Year],
SUM([p].Litres) [Total Sale]
FROM CustomerPoints as [p]
INNER JOIN Customers as [c]
ON [c].[CustomerID]=[p].[CustomerID]
WHERE [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05'
AND [c].DistributorID='1'
GROUP BY CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50))
ORDER BY [p].Transdate ASC
或者
SELECT
CAST(CAST((DATEPART(MONTH,[p].Transdate))as VARCHAR(50))
+'-'+CAST((DATEPART(YEAR,[p].Transdate))as VARCHAR(50))) AS [Month/Year],
SUM([p].Litres) [Total Sale]
FROM CustomerPoints as [p]
INNER JOIN Customers as [c]
ON [c].[CustomerID]=[p].[CustomerID]
WHERE [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05'
AND [c].DistributorID='1'
GROUP BY CAST(CAST((DATEPART(MONTH,[p].Transdate))as VARCHAR(50))
+'-'+CAST((DATEPART(YEAR,[p].Transdate))as VARCHAR(50)))
ORDER BY [p].Transdate ASC
答案 1 :(得分:0)
试试这个..
SELECT
CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50)) AS [Month/Year],
SUM([p].Litres) [Total Sale]
FROM CustomerPoints as [p]
INNER JOIN Customers as [c]
ON [c].[CustomerID]=[p].[CustomerID]
WHERE [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05'
AND [c].DistributorID='1'
GROUP BY CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50))
ORDER BY [p].Transdate ASC
答案 2 :(得分:0)
SELECT
Cast((Datepart(Month,[p].Transdate)) as varchar(50))
+'-'+ Cast((Datepart(Year,[p].Transdate))as varchar(50)) AS [Month/Year]
,Sum([p].Litres) [Total Sale]
FROM CustomerPoints as [p]
Inner Join Customers as [c]
on [c].[CustomerID]=[p].[CustomerID]
where [p].Transdate between '2013-01-20' AND '2015-03-05'
AND [c].DistributorID='1'
GROUP BY Cast((Datepart(Month,[p].Transdate)) as varchar(50)) + '-'+ Cast((Datepart(Year,[p].Transdate))as varchar(50))
ORDER BY Cast((Datepart(Month,[p].Transdate)) as varchar(50)) + '-'+ Cast((Datepart(Year,[p].Transdate))as varchar(50)) ASC