2016-11-10 2 views
0

В настоящее время я получаю количество кобелей/женщин, о которых у нас есть данные в нашей базе данных. Он отображает как:Изменить Column1 to headers

Gender | Total 
------------------ 
Male : 24251561 
Female : 24886049 

мне нужно, чтобы отобразить в

Male | Female 
------------------ 
24251561 : 24886049 

вот мой текущий код, чтобы получить данные

select a.GENDER,count(1) 
from (
    select case when CONVERT(INT,SUBSTRING(h.ID_Number,7,4)) < 5000 then  'FEMALE' else 'MALE' end as GENDER 
from CB_Header h with (nolock) 
where h.id_number is not null 
and dbo.vf_Valid_id(h.id_number) = 1 
)a 
group by a.GENDER 

ответ

1
CREATE TABLE #PIVOT 

(

GENDER VARCHAR(100), TOTAL INT 
) 
INSERT INTO #PIVOT VALUES 

('MALE',24251561), 
('FEMALE',24886049) 



SELECT * 
FROM 
(
    SELECT GENDER, TOTAL 
    FROM #PIVOT 
) SRC 
PIVOT 
(
    MAX(TOTAL) 
    FOR GENDER IN ([MALE], [FEMALE]) 
) PIV; 

MALE  FEMALE 
24251561 24886049 
0
Select Sum(iif(Convert(int, Substring(h.ID_number,7,4)) < 5000, 1, 0)) As Female, 
    Sum(iif(Convert(int, Substring(h.ID_number,7,4)) >= 5000, 1, 0)) As Male 
    From CB_Header As h 
    Where h.ID_number Is Not Null 
    And dbo.vf_Valid_id(h.ID_number) = 1; 

Вы уверены, что вы хотите использовать NOLOCK?

+0

его очень большой стол и привыкает много. не беспокойтесь, сервер может справиться с этим – Arno4Jackie

+0

, не используя NOLOCk, мы сталкиваемся с тупиками – Arno4Jackie

Смежные вопросы