读书人

sql编写疑问。求。

发布时间: 2012-12-22 12:05:06 作者: rapoo

sql编写疑问。求大虾。。。
主键 任务编号 企业编号 范围编号
1rw001Qy0011
2rw001Qy0021
3rw001Qy0022
4rw001Qy0041
5rw002Qy0051
6rw002Qy0041
7rw002Qy0041
8rw002Qy0081
9Rw003Qy0111
10Rw003Qy0121
11Rw003Qy0131
12Rw003Qy0141

求:通过sql语句查询出:“任务编号”相同“企业编号”相同“范围编号”不相同的“任务编号”和“企业编号”。
求出的结果应该是:rw001 qy002
[最优解释]


select 任务编号,企业编号 from 你的表 group by 任务编号,企业编号 having count(*)>1 and min(范围编号)<>max(范围编号)

[其他解释]
select 任务编号,企业编号 from t
group by 任务编号,企业编号 having count(distinct 范围编号
)>1

[其他解释]
WITH t AS (
select 1 ID ,'rw001' rw,'Qy001' qy, 1 fw from dual union all
select 2 ,'rw001','Qy002', 1 from dual union all
select 3 ,'rw001','Qy002', 2 from dual union all
select 4 ,'rw001','Qy004', 1 from dual union all
select 5 ,'rw002','Qy005', 1 from dual union all
select 6 ,'rw002','Qy004', 1 from dual union all
select 7 ,'rw002','Qy004', 1 from dual union all
select 8 ,'rw002','Qy008', 1 from dual union all
select 9 ,'Rw003','Qy011', 1 from dual union all
select 10,'Rw003','Qy012', 1 from dual union all
select 11,'Rw003','Qy013', 1 from dual union ALL
select 111,'Rw003','Qy013', 1 from dual union all
select 12,'Rw003','Qy014', 1 from dual )
SELECT rw,qy
FROM t t
GROUP BY rw,qy
HAVING COUNT(1)>1 AND NOT EXISTS (SELECT 1
FROM t a
GROUP BY rw,qy,fw
HAVING COUNT(1)>1 AND a.rw=t.rw)
[其他解释]
intersect 试试
[其他解释]
INTERSECT 试试
[其他解释]
引用:
SQL code

select 任务编号,企业编号 from 你的表 group by 任务编号,企业编号 having count(*)>1 and min(范围编号)<>max(范围编号)


巧妙
[其他解释]
引用:
SQL code


select 任务编号,企业编号 from 你的表 group by 任务编号,企业编号 having count(*)>1 and min(范围编号)<>max(范围编号)

这样,欠妥吧,范围编号是这样的呢 1 2 2 2 3
[其他解释]
引用:
引用:
SQL code


select 任务编号,企业编号 from 你的表 group by 任务编号,企业编号 having count(*)>1 and min(范围编号)<>max(范围编号)

这样,欠妥吧,范围编号是这样的呢 1 2 2 2 3


其实min<>max意思是不统计范围编号相同的,因为按照任务编号和企业编号分组后得到的结果是不管范围编号是否相同只要任务编号和企业编号相同就会分成一组。所以havingcount>1后再剔除范围编号相同的数据,结果自然是楼主需要的。
[其他解释]
这个问题其实很简单
比如你这个表叫:AAA
SQL语句:
select distinct(e1.任务编号),e1.企业编号 from AAA e1,AAA e2
where e1.任务编号=e2.任务编号
and e1.企业编号=e2.企业编号
and e1.范围编号<>e2.范围编号

查询结果:rw001 qy002
[其他解释]
引用:
SQL code

select 任务编号,企业编号 from 你的表 group by 任务编号,企业编号 having count(*)>1 and min(范围编号)<>max(范围编号)


UP
[其他解释]
select 任务编号,企业编号 from 你的表 group by 范围编号 having count(1)=0;

[其他解释]


select 任务编号,企业编号 from 你的表 group by 范围编号 having count(1)=1;
[/Quote]
[其他解释]
select distinct e1.任务编号,e1.企业编号 from AAA e1,AAA e2
where e1.任务编号=e2.任务编号
and e1.企业编号=e2.企业编号
and e1.范围编号<>e2.范围编号

select 任务编号,企业编号 from 你的表 group by 任务编号,企业编号 having count(*)>1 and min(范围编号)<>max(范围编号)

读书人网 >oracle

热点推荐