日期:2014-05-17  浏览次数:20704 次

请教:这个查询语句怎么写
有一个表T1,结构如下。
id ETP_NAME TYPE_ID CS_ID CS_FL CS_NAME CS_UNIT CS_ZB
001 企业12 99 9901 生产指标 生产线数量 条 2
001 企业12 99 9902 产品指标-产品 酒精等级 - 工业优级,工业一级,工业二级
001 企业12 99 9903 产品指标-产品 酒精浓度 %(vol) 40
001 企业12 99 9904 产品指标-产品 成品酒精产量 t/a 55
002 企业2 99 9901 生产指标 生产线数量 条 11
002 企业2 99 9902 产品指标-产品 酒精等级 -
002 企业2 99 9903 产品指标-产品 酒精浓度 %(vol) 79
002 企业2 99 9904 产品指标-产品 成品酒精产量 t/a
999 实验室 99 9901 生产指标 生产线数量 条 4
999 实验室 99 9902 产品指标-产品 酒精等级 -
999 实验室 99 9903 产品指标-产品 酒精浓度 %(vol) 89
999 实验室 99 9904 产品指标-产品 成品酒精产量 t/a


举例:我想查询生产线数量(cs_id='9901')大于2条的,并且酒精浓度(cs_id='9903')等于'工业一级‘的数据,怎样写查询语句。
多谢了。


------解决方案--------------------
SQL code

create table TestTbl1 as 
select '企业12' name,9901 cs_id,'生产线数量' CS_NAME,'3' CS_ZB from dual
union
select  '企业12',9902,'酒精等级','工业一级' from dual
union
select  '企业14',9902,'酒精等级','工业一级' from dual
union
select '企业15' ,9901 ,'生产线数量' ,'3'  from dual
  
select a.name from 
(select name from TestTbl1 a where a.cs_name='生产线数量' and to_number(a.cs_zb) > 2) a,
(select name from TestTbl1 a where a.cs_name='酒精等级' and a.cs_zb = '工业一级') b 
where a.name=b.name