我们有汽车表。 它有字幕:
我们有城市:
表格:
这3个城市拥有25万辆汽车。
我们如何显示它们按城市和计数分组,但是城市是列。
这是我的查询
SELECT Count(veh.id) [Count],pd.District, vet.Name FROM Vehicles veh
INNER JOIN PostalDistricts pd on pd.Id = veh.PostalDistrictId
INNER JOIN VehicleMarqueId vet on vet.id = veh.VehicleMarqueId
GROUP BY pd.District, vet.Name
ORDER BY Count(veh.id) DESC, pd.District asc
但是结果是:
+-------+-------------+--------+
| Count | City | Marque |
+-------+-------------+--------+
| 9547 | New York | Toyota |
| 3509 | Dallas | Toyota |
| 2608 | Los Angeles | Toyota |
| 2545 | New York | Nissan |
| 2107 | Dallas | Nissan |
| 1780 | Los Angeles | Nissan |
+-------+-------------+--------+
预期是:
+-------------+--------+--------+
| City | Toyota | Nissan |
+-------------+--------+--------+
| Dallas | 3509 | 2107 |
| Los Angeles | 2608 | 1780 |
| New York | 9547 | 2545 |
+-------------+--------+--------+
答案 0 :(得分:0)
您可以使用pivot
语句:
declare @tmp table ([count] int , City varchar(50), Marque nvarchar(50))
insert into @tmp values
(9547, 'New York', 'Toyota')
,(3509, 'Dallas', 'Toyota')
,(2608, 'Los Angeles', 'Toyota')
,(2545, 'New York', 'Nissan')
,(2107, 'Dallas', 'Nissan')
,(1780, 'Los Angeles', 'Nissan')
select * from @tmp
pivot
(
max([count])
for Marque in ([Toyota], [Nissan] )
) piv
结果:
但是,如果您在Marque
列中有更多值,则必须使用动态TSQL生成所需的所有列