这样(a.完成重量)查询出来只有四列,重量,长,宽,高, 请教如何才能显示,a.*的全部列呢?Select
a.完成重量,
Case
When (厚度<=0.8) then 'A-0.8以下'
When (厚度>=0.81 And 厚度<=1.2) then 'B-0.81~1.2'
When (厚度>=1.21 And 厚度<=1.6) then 'C-0.81~1.6'
When (厚度>=1.61 And 厚度<=2.3) then 'D-0.81~2.3'
When (厚度>=2.31 And 厚度<=3.2) then 'E-0.81~3.2'
Else
'厚度异常'
End
厚度区间
,
Case
When (宽度<200) Then 'A-200以下'
When (宽度>=200 And 宽度<=399) Then 'B-200~399'
When (宽度>=400 And 宽度<=499) Then 'C-400~499'
When (宽度>=500 And 宽度<=599) Then 'D-500~599'
When (宽度>=600 And 宽度<=799) Then 'E-600~799'
When (宽度>=800 And 宽度<=999) Then 'F-800~999'
When (宽度>=1000 And 宽度<=1199) Then 'G-1000~1199'
When (宽度>=1200 And 宽度<=1399) Then 'H-1200~1399'
Else 'I-宽度异常'
End
宽度区间
,Case
When (长度<200) Then 'A-200以下'
When (长度>=200 And 长度<=399) Then 'B-200~399'
When (长度>=400 And 长度<=499) Then 'C-400~499'
When (长度>=500 And 长度<=599) Then 'D-500~599'
When (长度>=600 And 长度<=799) Then 'E-600~799'
When (长度>=800 And 长度<=999) Then 'F-800~999'
When (长度>=1000 And 长度<=1199) Then 'G-1000~1199'
When (长度>=1200 And 长度<=1399) Then 'H-1200~1399'
Else 'I-长度异常'
End
长度区间from
RPT_TEST_20100621 aunion all
Select 0 完成重量,a.*,b.*,c.*
from
(
Select 'A-0.8以下' 厚度区间 from Dual
union all
Select 'B-0.81~1.2' 厚度区间 from Dual
union all
Select 'C-0.81~1.6' 厚度区间 from Dual
union all
Select 'D-0.81~2.3' 厚度区间 from Dual
union all
Select 'E-0.81~3.2' 厚度区间 from Dual
) a,
(
Select 'A-200以下' 宽度区间 from Dual
union all
Select 'B-200~399' 宽度区间 from Dual
union all
Select 'C-400~499' 宽度区间 from Dual
union all
Select 'D-500~599' 宽度区间 from Dual
union all
Select 'E-600~799' 宽度区间 from Dual
union all
Select 'F-800~999' 宽度区间 from Dual
union all
Select 'G-1000~1199' 宽度区间 from Dual
union all
Select 'H-1200~1399' 宽度区间 from Dual
) b,
(
Select 'A-200以下' 长度区间 from Dual
union all
Select 'B-200~399' 长度区间 from Dual
union all
Select 'C-400~499' 长度区间 from Dual
union all
Select 'D-500~599' 长度区间 from Dual
union all
Select 'E-600~799' 长度区间 from Dual
union all
Select 'F-800~999' 长度区间 from Dual
union all
Select 'G-1000~1199' 长度区间 from Dual
union all
Select 'H-1200~1399' 长度区间 from Dual
) c
select a.完成重量,a.某字段1,a.某字段2
...
union all
select 0 完成重量,0 某字段1, 0 某字段2..
字段应该使用用于计量的数值字段,其他的无关字段不要出现
那在 A.完成重量后加字段就行了,select a.完成重量,a.某字段1,a.某字段2
...前提是后面加的字段必须跟“完成重量”一样的数据类型,而我现在想添加的字段类型是字符型的,就不行啦,
1:它是把两个结果集相加
2:限制条件要求前边的结果集各个字段的数据类型与后边的结果集各个字段的数据类型要完全一致
给个例子吧:
with t as
(
select 0 a,'a' b from dual
union all
select 1 a,'b' b from dual
union all
select 2 a,'c' b from dual
union all
select 2 a,'c' b from dual
)
select * from t
这个a列是数值型的b列是字符型的,查询没有问题
with t as
(
select 0 a,'a' b from dual
union all
select 1 a,'b' b from dual
union all
select 2 a,'c' b from dual
union all
select 2 a,0 b from dual
)
select * from t
这个查询就会出错,因为数据类型不对
Select
a.完成重量,a.投入重量, a.废料,
Case
When (厚度<=0.8) then 'A-0.8以下'
When (厚度>=0.81 And 厚度<=1.2) then 'B-0.81~1.2'
When (厚度>=1.21 And 厚度<=1.6) then 'C-0.81~1.6'
When (厚度>=1.61 And 厚度<=2.3) then 'D-0.81~2.3'
When (厚度>=2.31 And 厚度<=3.2) then 'E-0.81~3.2'
Else
'厚度异常'
End
厚度区间
,
Case
When (宽度<200) Then 'A-200以下'
When (宽度>=200 And 宽度<=399) Then 'B-200~399'
When (宽度>=400 And 宽度<=499) Then 'C-400~499'
When (宽度>=500 And 宽度<=599) Then 'D-500~599'
When (宽度>=600 And 宽度<=799) Then 'E-600~799'
When (宽度>=800 And 宽度<=999) Then 'F-800~999'
When (宽度>=1000 And 宽度<=1199) Then 'G-1000~1199'
When (宽度>=1200 And 宽度<=1399) Then 'H-1200~1399'
Else 'I-宽度异常'
End
宽度区间
,Case
When (长度<200) Then 'A-200以下'
When (长度>=200 And 长度<=399) Then 'B-200~399'
When (长度>=400 And 长度<=499) Then 'C-400~499'
When (长度>=500 And 长度<=599) Then 'D-500~599'
When (长度>=600 And 长度<=799) Then 'E-600~799'
When (长度>=800 And 长度<=999) Then 'F-800~999'
When (长度>=1000 And 长度<=1199) Then 'G-1000~1199'
When (长度>=1200 And 长度<=1399) Then 'H-1200~1399'
Else 'I-长度异常'
End
长度区间
,
生产线
from
RPT_TEST_20100625 aunion all
Select 0 完成重量,0 投入重量, 0 废料,a.*,b.*,c.*,d.*
from
(
Select 'A-0.8以下' 厚度区间 from Dual
union all
Select 'B-0.81~1.2' 厚度区间 from Dual
union all
Select 'C-0.81~1.6' 厚度区间 from Dual
union all
Select 'D-0.81~2.3' 厚度区间 from Dual
union all
Select 'E-0.81~3.2' 厚度区间 from Dual
) a,
(
Select 'A-200以下' 宽度区间 from Dual
union all
Select 'B-200~399' 宽度区间 from Dual
union all
Select 'C-400~499' 宽度区间 from Dual
union all
Select 'D-500~599' 宽度区间 from Dual
union all
Select 'E-600~799' 宽度区间 from Dual
union all
Select 'F-800~999' 宽度区间 from Dual
union all
Select 'G-1000~1199' 宽度区间 from Dual
union all
Select 'H-1200~1399' 宽度区间 from Dual
) b,
(
Select 'A-200以下' 长度区间 from Dual
union all
Select 'B-200~399' 长度区间 from Dual
union all
Select 'C-400~499' 长度区间 from Dual
union all
Select 'D-500~599' 长度区间 from Dual
union all
Select 'E-600~799' 长度区间 from Dual
union all
Select 'F-800~999' 长度区间 from Dual
union all
Select 'G-1000~1199' 长度区间 from Dual
union all
Select 'H-1200~1399' 长度区间 from Dual
) c,
(Select Distinct 生产线 from RPT_TEST_20100625) d
前面的语句能全拿到你的数据。但是你的这个图显示的是明显的有问题的你的“生产线”跟后面的几个区间,本身也是多对多的关系
所以你下面的这个表格的M1列是错的,不信你随便填上你要的A1,A2之类的看看。
当然,如果你的某条生产线与区间是严格的一一对应关系,也是可以的。