2017-04-13 169 views
0

我在SQL Server中使用日期和性别数据统计SQL Server的数据透视表Help101

WC   Gender Cnt 
----------------------- 
2017-01-02 M 84617 
2017-01-02 F 54896 
2017-01-09 M 60120 
2017-01-09 F 40173 
2017-01-16 M 56387 
2017-01-16 F 41164 

我有这种格式的数据,我需要把它改造成

WC   M  F 
-------------------------- 
02/01/2017 84617 54896 
09/01/2017 60120 40173 
16/01/2017 56387 41164 

回答

1

使用条件聚集:

select 
    wc 
    , M = max(case when gender = 'M' then Cnt end) 
    , F = max(case when gender = 'F' then Cnt end) 
from t 
group by wc 

使用pivot()

select 
    wc 
    , M 
    , F 
from t 
    pivot (max(cnt) for gender in (m,f)) as p 

都返回:

+------------+-------+-------+ 
|  wc  | M | F | 
+------------+-------+-------+ 
| 2017-01-02 | 84617 | 54896 | 
| 2017-01-09 | 60120 | 40173 | 
| 2017-01-16 | 56387 | 41164 | 
+------------+-------+-------+ 

Rextester演示:http://rextester.com/ITC17758

+0

非常感谢它的工作。爱你。 –

+0

@ArijitGanguly乐于帮忙! – SqlZim

0

没有透视需要。你可以用几个连接来做到这一点...

SELECT a.wc, t1.cnt, t2.cnt 
FROM (SELECT DISTINCT wc FROM tablename) a 
INNER JOIN tablename t1 ON t1.wc = a.wc AND t1.gender = 'M' 
INNER JOIN tablename t2 ON t2.wc = a.wc AND t2.gender = 'F'