求SQL如何写,条件如下,再线

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
谢谢:
结构:NAME(姓名),DEPT(单位),DJ(等级)
AA
单位A

AA
单位A

AA
单位A

AS
单位B

AS
单位B

AS
单位C

AS
单位C

AS
单位C


=================================================
单位|| 姓名 || 甲 || 乙 || 丙|| 甲/(甲+乙+丙)%||
-------------------------------------------------------------------------------------------------
单位A || AA || 2||1||0 ||66。67%
||
--------------------------------------------------------------------------------------------------
单位B||AS|| 1||0 ||1||50%
||
------------------------------------------------------------------------------------------------
单位C||AS|| 1||1 ||1 ||33.33%
||
------------------------------------------------------------------------------------------------
这个SQL如何写呀??
请教?谢谢
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
用partitinon by 可以搞定
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
怎么找他???
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
用decode函数,一个典型的行转列。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
decode>
能搞定吗?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
不知道,能不能搞定
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
SELECT YS,

count(DECODE(DJBZ,1,DJBZ,null)) "aa",

count(DECODE(DJBZ,2,DJBZ,null)) "bb",

count(DECODE(DJBZ,3,DJBZ,null)) "cc"
from econstat.bqbldjpd
group by
ys;是不是这样??
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
select dept, name,
sum(decode(dj, '甲', 1, 0)),
sum(decode(dj, '乙', 1, 0)),
sum(decode(dj, '丙', 1, 0)),
to_char( sum(decode(dj, '甲', 1, 0)) / ( sum(decode(dj, '甲', 1, 0)) + sum(decode(dj, '乙', 1, 0)) + sum(decode(dj, '丙', 1, 0)) ) * 100, 'fm90.00')||'%'
from table_name
group by dept, name;
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
实际上就是横表转纵表么,有两个方法的
1用DECODE
2还可以用连接做
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行