Bạn có thể sử dụng PIVOT
cho việc này. Nếu bạn có một số tiếng của cột, sau đó bạn có thể mã hóa cứng các giá trị với một PIVOT TĨNH:
select *
from
(
select substring(name, 1, 1) name, -- use the same field twice,
substring(name, 1, 1) initial -- once will be for the count the other for columns
from yourtable
) x
pivot
(
count(name)
for initial in ([B], [M])
) p
Xem SQL Fiddle With Demo
Nếu bạn có một số không rõ các cột để chuyển đổi, sau đó bạn có thể sử dụng sql năng động và tạo ra một PIVOT động:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ','
+ QUOTENAME(substring(name, 1, 1))
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + ' from
(
select substring(name, 1, 1) name,
substring(name, 1, 1) initial
from yourtable
) x
pivot
(
count(name)
for initial in (' + @cols + ')
) p '
execute(@query)
Xem SQL Fiddle with Demo
Nếu sau đó bạn muốn lọc dữ liệu thiết lập xuống o nly những người bắt đầu với B or M
thì bạn có thể sử dụng mệnh đề WHERE
để lọc.
where substring(name, 1, 1) in ('B', 'M')
Tôi không biết làm thế nào một liên minh sẽ giúp bạn có hai cột – Paparazzi