select FNumber as 物料代码,FName as 物料名称,FModel as 规格型号
from t_ICItem 这是我查物料的SQL,显示的结果为
物料代码 物料名称 规格型号
1.0401.0001 4"DF(15719) 48*14mm 110V-130V/50Hz
1.0401.0002 4"DF(15719) 48*14mm 110V-130V/60Hz
1.0401.0003 4"DF(15719) 48*14mm 220V-240V/50Hz
1.0401.0004 4"DF(15719) 48*14mm 220V-240V/60Hz
1.0401.1003 4"DF(15724) 48*14mm 220V-240V/50Hz
1.0701.0001 7"BF(15727) 60*20mm 110V-130V/50Hz
现我要求在物料下一行显示带J的物料代码,如下
物料代码 物料名称 规格型号
1.0401.0001 4"DF(15719) 48*14mm 110V-130V/50Hz
J1.0401.0002 4"DF(15719) 48*14mm 110V-130V/60Hz
1.0401.0003 4"DF(15719) 48*14mm 220V-240V/50Hz
J1.0401.0004 4"DF(15719) 48*14mm 220V-240V/60Hz
1.0401.1003 4"DF(15724) 48*14mm 220V-240V/50Hz
J1.0701.0001 7"BF(15727) 60*20mm 110V-130V/50Hz
如果数据库里某物料没有带J的物料,就不显示出来
------解决思路----------------------
1,找出去除带”J“字段后的相同记录
select
t_ICItem.FNumber,
t_ICItem.FName,
t_ICItem.FModel
from t_ICItem
where t_ICItem.FNumber not in('1.0401.0001','1.0401.0003','1.0401.1003')
order by t_ICItem.FName ,t_ICItem.FModel
2,使用REPLACE函数去除带”J“的记录
select
REPLACE(t_ICItem.FNumber,'J','') as number
from t_ICItem
3,将过虑后的表,按number 字段进行分组,找出number 个数等于1的。
select number from (select
REPLACE(t_ICItem.FNumber,'J','') as number
from t_ICItem) as t
group by number
having COUNT(*)=1
4,最后用not in
select
t_ICItem.FNumber,
t_ICItem.FName,
t_ICItem.FModel
from t_ICItem
where t_ICItem.FNumber not in(select number from (select
REPLACE(t_ICItem.FNumber,'J','') as number
from t_ICItem) as t
group by number
having COUNT(*)=1)
order by t_ICItem.FName ,t_ICItem.FModel