2016-11-10 101 views
0

我目前正在獲取我們的數據庫中的數據的男性/女性的數量。它顯示爲:將Column1更改爲標題

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