请教高手一个SQL问题:一个这样的表,表中数据如下: 客户号 证件类型 证件号码 30

客户号证件类型证件号码1000002085A345040400002420431000002085A345040400002420431000002085E6450325... 客户号 证件类型 证件号码
1000002085 A3 4504040000242043
1000002085 A3 4504040000242043
1000002085 E6 450325000000603
1000002085 A5 450325753736469
1000002085 E6 450325000000603
1000002085 A5 450325753736469
1000000250 A3 4504010000299681
1000000250 E8 69763808-9
要求按照证件类型:E6 E8 A3 A5 的优先级来取 证件类型 ,证件号码.意思就是目标表还是有这么多行,如果这个客户号有证件类型为E6的数据,那么所有这个客户的行的证件类型都变成E6,证件号变成E6的证件号,如果没有,则取E8,E8没有,则取A3,依此类推.
上面的数据经过查询得到的表样是:
客户号 证件类型 证件号码
1000002085 E6 450325000000603
1000002085 E6 450325000000603
1000002085 E6 450325000000603
1000002085 E6 450325000000603
1000002085 E6 450325000000603
1000002085 E6 450325000000603
1000000250 E8 69763808-9
1000000250 E8 69763808-9
请高手赐教,不胜感激!!
有谁知道哈,我只有这么多分,全给了.请大家帮忙哈.
展开
 我来答
哈哈绝代风华基本不会
2012-07-04
知道答主
回答量:8
采纳率:0%
帮助的人:3.8万
展开全部
你先告诉我,为什么结果要重复这么多行?
假设你的表为A表.假设有多少行重复多少行,脚本可以这样写
select
b.客户号,
b.证件类型,
b.证件号码
from a,
(
select 客户号, 证件类型,证件号码
, ROW_NUMBER() OVER (PARTITION BY 客户号 ORDER BY
case when 证件类型 = 'E6' then '01'
when 证件类型 = 'E8' then '02'
when 证件类型 = 'A3' then '03'

when 证件类型 = 'A5' then '04' else '05' end
ASC) aa
from a
)b
where a.客户号 = b.客户号 and b.aa = 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-05
展开全部
假设你的表为A表.假设有多少行重复多少行,脚本可以这样写
with t as (select * from (select 客户号, 证件类型,证件号码
, ROW_NUMBER() OVER (PARTITION BY 客户号 ORDER BY
case when 证件类型 = 'E6' then '01'
when 证件类型 = 'E8' then '02'
when 证件类型 = 'A3' then '03'

when 证件类型 = 'A5' then '04' else '05' end
ASC ) r ) a where a.r=1 )
select a.客户号,t.证件类型,t.证件号码 from a left join t on a.客户号=t.客户号

你的这个需求很奇怪,不过这个语句应该可以满足你的需求。希望成功后,能采纳我的答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woyaoaiaia
2012-07-05 · TA获得超过764个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:163万
展开全部
select C3.客户号,C4.证件类型,C4.证件号码
from Customer C3,(select distinct C1.客户号,C1.证件类型,C1.证件号码
from Customer C1,(select 客户号,min(case 证件类型
when 'E6' then 1
when 'E8' then 2
when 'A3' then 3
when 'A5' then 4
end) as 最优
from Customer
group by 客户号) C2
where C1.客户号=C2.客户号
and case 证件类型
when 'E6' then 1
when 'E8' then 2
when 'A3' then 3
when 'A5' then 4
end=C2.最优) C4
where C3.客户号=C4.客户号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mayuxian521
2012-07-05
知道答主
回答量:26
采纳率:0%
帮助的人:5万
展开全部
使用 SQL 语句中的 Case When Then 语句 ,百度后 查询使用语法。就可以实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HXRJW
2012-07-05 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:78.7万
展开全部
没懂要解决什么问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式