这句sql怎么写?
有表table1,字段及记录如下:
单位编码 水表代码 口径 水量 用水性质
A0101 12 15 100 生活
A0101 13 16 110 生产
A0105 14 22 120 生活
A0105 15 22 130 生活
A0106 14 22 120 生活
A0106 15 22 120 生产
如果得到:按口径-水量-用水性质进行筛选,筛选原则:
在相同单位编码里面比较口径大小,大的优选选中然后再进一步比较
在相同口径里面比较水量大小,多的优先选中然后再进一步比较
在相同水量里面比较用水性质,用水性质为"生产"的优先
按此原则得到如下记录:
单位编码 水表代码 口径 水量 用水性质
A0101 13 16 110 生产
A0105 15 22 130 生活
A0106 15 22 120 生产
问题点数:0、回复次数:6Top
1 楼leeboyan(宝宝)回复于 2004-09-03 18:24:22 得分 0
select 单位编码,max(口径)as 口径,max(水量)as 水量,用水性质=(case when 用水性质='生产' then '生产' else '生活' end) from tablename group by 单位编码Top
2 楼yesterday2000(一笑而过)回复于 2004-09-03 18:37:21 得分 0
create table sb (单位编码 char (10),水表代码 int,口径 int,水量 int ,用水性质 char (4))
insert into sb
select 'A0101', 12, 15, 100 , '生活'
union
select 'A0101', 13 , 16 , 110 , '生产'
union
select 'A0105', 14, 22, 120, '生活'
union
select 'A0105', 15 , 22 , 130, '生活'
union
select 'A0106' , 14 , 22 , 120 , '生活'
union
select 'A0106', 15 , 22 , 120 , '生产'
select b.*,a.用水性质 from sb a,(
select 单位编码 ,max(水表代码) 水表代码,max (口径) as 口径,max (水量) as 水量
from sb
group by 单位编码) b
where a.单位编码=b.单位编码 and a.水表代码=b.水表代码
单位编码 水表代码 口径 水量 用水性质
-------- ------- ---- ---- -------
A0101 13 16 110 生产
A0105 15 22 130 生活
A0106 15 22 120 生产Top
3 楼bernice99(宝宝)回复于 2004-09-03 22:23:57 得分 0
select 单位编码,max(水表代码),max(口径),max(水量),max(用水性质)from table1 group by 单位编码
在音序中,生产>生活。所以max(用水性质)优先选生产。
Top
4 楼enjsky(郭志军)回复于 2004-09-03 22:37:06 得分 0
楼上的加一条这个就不对了啊
insert into sb
select 'A0106', 15 , 22 , 120 , '生活'Top
5 楼enjsky(郭志军)回复于 2004-09-03 22:38:58 得分 0
成这样了
单位编码 水表代码 口径 水量 用水性质
---------- ----------- ----------- ----------- ----
A0101 13 16 110 生产
A0105 15 22 130 生活
A0106 15 22 120 生产
A0106 15 22 120 生活Top
6 楼enjsky(郭志军)回复于 2004-09-03 22:48:33 得分 0
这样对了吧..
select 单位编码,max(水表代码) as 水表代码,max(口径) as 口径,max(水量) as 水量,min(用水性质) as 用水性质
from sb group by 单位编码
结果:
单位编码 水表代码 口径 水量 用水性质
---------- ----------- ----------- ----------- ----
A0101 13 16 110 生产
A0105 15 22 130 生活
A0106 15 22 120 生产
bernice99(bernice99)错了,应该是min(用水性质)
Top




