Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于更改表结构的SQL脚本_Sql_Sql Server 2008 - Fatal编程技术网

用于更改表结构的SQL脚本

用于更改表结构的SQL脚本,sql,sql-server-2008,Sql,Sql Server 2008,我正在处理SQL数据库(Microsoft SQL Server 2008) 我有一张这样的桌子 Country Gender Number ---------+---------------+-----------+ Russia Male 50000 Russia Female 40000 Russia Unknown

我正在处理SQL数据库(Microsoft SQL Server 2008)

我有一张这样的桌子

Country     Gender           Number         
---------+---------------+-----------+
Russia       Male              50000                
Russia       Female            40000 
Russia       Unknown           30000
India        Male              45678                
India        Female            21354  
China        Male              37878                
China        Female            45686
China        Unknown           24534
France       Male              45378                
France       Female            49783   
是否有sql select脚本可以返回如下表:

    Country      Male             Female      Unknown   
---------+---------------+-----------+-----------------+
Russia       50000            40000        30000             
India        45678            21354        0
China        37878            45686        24534
France       45378            49783        0
请注意,一些国家没有“未知”数据,因此在这种情况下,它应为0


我尝试了几件事,但没有得到任何接近的结果。感谢您的帮助。

您可以使用
pivot
运算符进行此类查询:

select Country,
    IsNull([Male], 0) Male,
    IsNull([Female], 0) Female,
    IsNull([Unknown], 0) Unknown
from TableName t
   pivot (sum(Number) for Gender in ([Male], [Female], [Unknown])) p

。。。如果您知道
(国家/地区、性别)
组合在原始数据中是唯一的,

您也可以使用此查询

select
    T.Country,
    max(case when T.Gender = 'Male' then T.Number else 0 end) as Male,
    max(case when T.Gender = 'Female' then T.Number else 0 end) as Female,
    max(case when T.Gender = 'Unknown' then T.Number else 0 end) as Unknown
from Table1 as T
group by T.Country