关于SQL问题....(20分)

  • 主题发起人 主题发起人 WuPing
  • 开始时间 开始时间
W

WuPing

Unregistered / Unconfirmed
GUEST, unregistred user!
我有这样的一个TABLE..

DeptID EmpNO Province
1 00001 广东省
1 00002 广东省
1 00003 安徽省
2 00004 四川省
2 00005 四川省
2 00006 江苏省
3 00007 四川省
3 00008 四川省
3 00009 广东省

我执行这样的SQL:
Select DeptID, SubString(Province,1,2)as Province,Count(*)Qty from Table
Group By DeptID,SubString(Province,1,2)
Order by DeptID

得出下列结果:
DeptID Province Qty
1 广东 2
1 安徽 1
2 四川 2
2 江苏 1
3 四川 2
3 广东 1

而我想按照下列的表示来显示,不知道SQL该如何去写:
DeptID 广东 安徽` 四川 江苏
1 2 1
2 2 2
3 1 2

各位帮忙!
 
用olap吧,建维度立方体,以DEPTID,省份名称为两个维度,以员工数量为度量值。
如果省份固定,只有几个且确定,可以用子查询解决,不用OLAP分析,如果省份不确定,
那最好还是用OLAP吧,我一下还想不出更好的办法,但OLAP会使数据库膨胀好大,慎之,
慎之!
 
在ORACLE当中的DECODE可以把行变成列。但因为你的省份是有限多的,可以直接用SQL写出,
在SQLSERVER当中就不清楚了。
 
Select DeptID,sum(iif( SubString(Province,1,2)='广东',1,0) as 广东,
sum(iif( SubString(Province,1,2)='安徽',1,0) as 安徽,
sum(iif( SubString(Province,1,2)='四川',1,0) as 四川,
sum(iif( SubString(Province,1,2)='江苏',1,0) as 江苏,
Group By DeptID


 
后退
顶部