注册 登录
编程论坛 SQL Server论坛

SQL视图中的空值如何参与运算?

woboy 发布于 2010-09-10 14:23, 2692 次点击
问题如题,付上父件和说明,请大家指点指点!谢谢!
只有本站会员才能查看附件,请 登录
14 回复
#2
tangyunzhong2010-09-10 14:43
回复 楼主 woboy
你想要什么东西啊,我看不出来你的需求,能说明白一点吗?
你想要的结果是不是就是那个路线.

[ 本帖最后由 tangyunzhong 于 2010-9-10 14:45 编辑 ]
#3
woboy2010-09-10 14:57
是的,就是想要《路线》列的结果
#4
aei1352010-09-10 15:27
select LEFT(isnull(a+'\','')+isnull(b+'\','')+isnull(c+'\','')+isnull(d+'\',''),LEN(isnull(a+'\','')+isnull(b+'\','')+isnull(c+'\','')+isnull(d+'\',''))-1)
 from 表名
把上面的a,b,c,d换成你的列名就行了,列不够的话再用类似方法加上一些列就行了
#5
qingshuiliu2010-09-10 15:30
如果为空,你不想显示\\的话
你在SQL语句中加个这样的判断,给你个思路;
case when AX is null
then '' else
AX+'\'  end
#6
qingshuiliu2010-09-10 15:31
楼上的方法应该可以解决问题了,呵呵
#7
woboy2010-09-10 17:00
谢谢版主们,但我实在太菜了,这个语句应该加在哪??
下面是我视图中的原始sql语句:
SELECT TOP 100 PERCENT dbo.wu_bom_no_工艺链.父件货号 AS A0,
      dbo.wu_bom_no_工艺链.父件货名 AS A0货名,
      dbo.wu_bom_no_工艺链.父件存货类型,
      dbo.wu_bom_no_工艺链.父件工序 AS A0工序,
      dbo.wu_bom_no_工艺链.子件货号 AS A1,
      dbo.wu_bom_no_工艺链.子件货名 AS A1货名,
      wu_bom_no_工艺链_1.父件工序 AS A1工序, dbo.wu_bom_no_工艺链.用量,
      wu_bom_no_工艺链_1.子件货号 AS A2, wu_bom_no_工艺链_1.子件货名 AS A2货名,
      wu_bom_no_工艺链_2.父件工序 AS A2工序, wu_bom_no_工艺链_2.子件货号 AS A3,
      wu_bom_no_工艺链_2.子件货名 AS A3货名,
      wu_bom_no_工艺链_3.父件工序 AS A3工序, wu_bom_no_工艺链_3.子件货号 AS A4,
      wu_bom_no_工艺链_3.子件货名 AS A4货名,
      wu_bom_no_工艺链_4.父件工序 AS A4工序, wu_bom_no_工艺链_4.子件货号 AS A5,
      wu_bom_no_工艺链_4.子件货名 AS A5货名,
      wu_bom_no_工艺链_5.父件工序 AS A5工序, wu_bom_no_工艺链_5.子件货号 AS A6,
      wu_bom_no_工艺链_5.子件货名 AS A6货名,
      wu_bom_no_工艺链_6.父件工序 AS A6工序, wu_bom_no_工艺链_6.子件货号 AS A7,
      wu_bom_no_工艺链_6.子件货名 AS A7货名,
      dbo.wu_bom_no_工艺链.父件货号 + '\' + dbo.wu_bom_no_工艺链.子件货号 + '\' + wu_bom_no_工艺链_1.子件货号
       + '\' + wu_bom_no_工艺链_2.子件货号 + '\' + wu_bom_no_工艺链_3.子件货号 + '\' + wu_bom_no_工艺链_4.子件货号
       + '\' + wu_bom_no_工艺链_5.子件货号 + '\' + wu_bom_no_工艺链_6.子件货号 AS 工艺路线
FROM dbo.wu_bom_no_工艺链 wu_bom_no_工艺链_6 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 wu_bom_no_工艺链_5 ON
      wu_bom_no_工艺链_6.父件货号 = wu_bom_no_工艺链_5.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 wu_bom_no_工艺链_4 ON
      wu_bom_no_工艺链_5.父件货号 = wu_bom_no_工艺链_4.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 wu_bom_no_工艺链_3 ON
      wu_bom_no_工艺链_4.父件货号 = wu_bom_no_工艺链_3.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 wu_bom_no_工艺链_2 ON
      wu_bom_no_工艺链_3.父件货号 = wu_bom_no_工艺链_2.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 wu_bom_no_工艺链_1 ON
      wu_bom_no_工艺链_2.父件货号 = wu_bom_no_工艺链_1.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 ON
      wu_bom_no_工艺链_1.父件货号 = dbo.wu_bom_no_工艺链.子件货号
ORDER BY dbo.wu_bom_no_工艺链.父件货号 DESC
#8
qingshuiliu2010-09-10 17:09
aei135,你快帮帮他啊
#9
woboy2010-09-10 21:34
是啊,aei135版主,请帮帮忙吧!谢谢
#10
woboy2010-09-10 22:37
两位版主,谢谢你们,我用你们的方法试成功了!
#11
woboy2010-09-11 10:11
新问题!昨天的问题解决了,谢谢版主们!今天再加了一个语句(红色字体)后出现错误提示!请教怎么回事?
SQL语句:
SELECT TOP 100 PERCENT BOM1.父件货号 AS A0, BOM1.父件货名 AS A0货名,
      BOM1.父件存货类型, BOM1.父件工序 AS A0工序, BOM1.子件货号 AS A1,
      BOM1.子件货名 AS A1货名, BOM1.子件工序 AS A1工序, BOM1.用量,
      BOM2.子件货号 AS A2, BOM2.子件货名 AS A2货名, BOM2.子件工序 AS A2工序,
      BOM3.子件货号 AS A3, BOM3.子件货名 AS A3货名, BOM3.子件工序 AS A3工序,
      BOM4.子件货号 AS A4, BOM4.子件货名 AS A4货名, BOM4.子件工序 AS A4工序,
      BOM5.子件货号 AS A5, BOM5.子件货名 AS A5货名, BOM5.子件工序 AS A5工序,
      BOM6.子件货号 AS A6, BOM6.子件货名 AS A6货名, BOM6.子件工序 AS A6工序,
      BOM7.子件货号 AS A7, BOM7.子件货名 AS A7货名, BOM7.子件工序 AS A7工序,
      LEFT(ISNULL(BOM1.父件货号 + '\', '') + ISNULL(BOM1.子件货号 + '\', '')
      + ISNULL(BOM2.子件货号 + '\', '') + ISNULL(BOM3.子件货号 + '\', '')
      + ISNULL(BOM4.子件货号 + '\', '') + ISNULL(BOM5.子件货号 + '\', '')
      + ISNULL(BOM6.子件货号 + '\', '') + ISNULL(BOM7.子件货号 + '\', ''),
      LEN(ISNULL(BOM1.父件货号 + '\', '') + ISNULL(BOM1.子件货号 + '\', '')
      + ISNULL(BOM2.子件货号 + '\', '') + ISNULL(BOM3.子件货号 + '\', '')
      + ISNULL(BOM4.子件货号 + '\', '') + ISNULL(BOM5.子件货号 + '\', '')
      + ISNULL(BOM6.子件货号 + '\', '') + ISNULL(BOM7.子件货号 + '\', '')) - 1) AS 工艺链,
      LEFT(ISNULL(BOM1.子件工序 + '\', '') + ISNULL(BOM2.子件工序 + '\', '')
      + ISNULL(BOM3.子件工序 + '\', '') + ISNULL(BOM4.子件工序 + '\', '')
      + ISNULL(BOM5.子件工序 + '\', '') + ISNULL(BOM6.子件工序 + '\', '')
      + ISNULL(BOM7.子件工序 + '\', ''), LEN(ISNULL(BOM1.子件工序 + '\', '')
      + ISNULL(BOM2.子件工序 + '\', '') + ISNULL(BOM3.子件工序 + '\', '')
      + ISNULL(BOM4.子件工序 + '\', '') + ISNULL(BOM5.子件工序 + '\', '')
      + ISNULL(BOM6.子件工序 + '\', '') + ISNULL(BOM7.子件工序 + '\', '')) - 1)
      AS 工序链
FROM dbo.wu_bom_no_工艺链 BOM7 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 BOM6 ON
      BOM7.父件货号 = BOM6.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 BOM5 ON
      BOM6.父件货号 = BOM5.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 BOM4 ON
      BOM5.父件货号 = BOM4.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 BOM3 ON
      BOM4.父件货号 = BOM3.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 BOM2 ON
      BOM3.父件货号 = BOM2.子件货号 RIGHT OUTER JOIN
      dbo.wu_bom_no_工艺链 BOM1 ON BOM2.父件货号 = BOM1.子件货号
ORDER BY BOM1.父件货号 DESC
错误提示:
只有本站会员才能查看附件,请 登录

#12
woboy2010-09-11 14:08
补充说明:“子件工序”列的内容为中文,而“货号”列的内容是数字加字符,
是因为格式不同的原因吗?
如果是,要怎样改才对?
请各位大侠帮帮忙
#13
woboy2010-09-13 10:57
版主高手们,请帮帮忙!谢谢!!!
#14
woboy2010-09-14 22:48
顶起来,问题还没解决!aei135版主,请帮忙看看!谢谢了!
#15
zhaoyang10082010-09-18 16:58
回复 4楼 aei135
请问一下isnull是个函数吗?什么用处?我在联机帮助上没找到类似的用法,上面介绍说它是一个返回布尔值的函数
1