Sql server 按列名联接表
我有一张有车辆标志和销售日期的桌子。我需要查询一下今年售出了多少辆不同的汽车,以月为单位,例如:Sql server 按列名联接表,sql-server,Sql Server,我有一张有车辆标志和销售日期的桌子。我需要查询一下今年售出了多少辆不同的汽车,以月为单位,例如: | January | February | March | April |.............. ---------------------------------------------------------- mark1 | | 1 | 5 | |.............. mark2 | 45 |
| January | February | March | April |..............
----------------------------------------------------------
mark1 | | 1 | 5 | |..............
mark2 | 45 | | | 7 |..............
mark3 | 12 | 11 | 5 | 3 |..............
原始表格为:
mark | soldDate
----------------------------
mark1 | 01/07/2020
mark2 | 04/07/2020
mark1 | 05/07/2020
mark3 | 06/07/2020
如果我想了解已售出的不同车辆数量,我将使用以下查询:
SELECT mark, COUNT(mark) WHERE FORMAT(soldDate, 'MMMM') = 'january' GROUP BY mark
如何在每个月分割数据?使用条件聚合:
select mark,
count(case when month(soldDate) = 1 then 1 end) as January,
count(case when month(soldDate) = 2 then 1 end) as February,
...........................................................
where year(soldDate) = 2020
group by mark
是否希望输出如图所示?如果是,请共享原始数据。表中的数据是什么样的?你尝试了什么,为什么不奏效?您的问题是什么?如果我想在一个月内购买售出的车辆,原始表格中有一行表示每辆售出的车辆和售出日期:选择标记,将(标记)计算为“车辆”,其中格式(soldDate,'MMMM')=“一月”按标记分组这是否回答了您的问题?你能解释一下你的答案吗?
SELECT Mark, DATENAME(MONTH, DATEADD(MONTH, MONTH(SalesDate) - 1, '1900-01-01')) M, COUNT(*) COUNT
FROM VehicleSales
WHERE YEAR(SalesDate) = '2020'
GROUP BY Mark, MONTH(SalesDate)
Order by Mark, M