当前位置: 代码迷 >> Sql Server >> SQL语句显示有关问题
  详细解决方案

SQL语句显示有关问题

热度:15   发布时间:2016-04-24 10:00:33.0
SQL语句显示问题
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的物料,就不显示出来
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

t_ICItem表就这几个字段吗?不代“J”的数据和带“J”的数据有什么联系啊
我主要比较带J物料和不带J的物料名称和规格型号是否相同,带J的物料是不带J的物料复制过去的,当时没有啥变化,但在后面使用过程中他们变了一部分规格型号和名称,但公司有要求带J物料和不带J物料名称和规格型号必须相同,带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 
  相关解决方案