2016-11-10 12 views
0

現在、私たちのデータベースにデータがある男性/女性の数が増えています。それはとして表示されます。私はそれがここにColumn1をヘッダーに変更する

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

として表示する必要が

Gender | Total 
------------------ 
Male : 24251561 
Female : 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

非常に大きなテーブルで、多く使われています。サーバがそれを処理できることを心配しないでくださいNOLOCkを使わずに – Arno4Jackie

+0

私たちはデッドロックする – Arno4Jackie

関連する問題