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