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

对数据类型而言运算符无效。运算符为 boolean AND,类型为 varchar。

hyz00001 发布于 2014-04-22 20:32, 2009 次点击
下面是我的代码,估计是第六行有错误,却不知道怎么样进行修改

t6.fname  & '调入' & t4.fname & '调出' 调入仓库, 这一行代码中的t6.fname 或者t4.fname 都有为null的可能性。



select
t1.fbillno 单号,
t1.fdate 审核日期,
isnull(isnull(t13.fname,t12.fname),t14.fname) 客户_供应商,
isnull(t6.fname,t4.fname) 仓库,
t6.fname  & '调入' & t4.fname & '调出' 调入仓库,
t4.fname 调出仓库,
t3.fnumber 料号,
T2.fqty 数量,
t5.fbillname
from icstockbill t1
left join icstockbillentry t2 on t1.finterid =t2.finterid
left join t_icitem t3 on t2.fitemid =t3.fitemid
left join t_stock t4 on t2.FSCStockID=t4.fitemid
left join t_stock t6 on t2.fdcstockid =t6.fitemid
left join ICBillNo t5 on t1.ftrantype =t5.fbillid
left join t_Supplier t13 on t1.FSupplyID = t13.FItemID
left join t_Organization t12 on t1.FSupplyID = t12.FItemID
left join t_Department t14 on t1.fdeptid =t14.fitemid
where t1.fdate between '2014-3-1' and '2014-3-31'
--and t5.fbillname like'仓库调拨单据'
--and year(t1.fdate)=2014 and month(t1.fdate)=4
--and t3.fnumber ='01.11.001940'
order by t1.fdate
4 回复
#2
hyz000012014-04-22 20:34
t6.fname  & '调入' & t4.fname & '调出' 调入仓库,
这一行的意思就是针对调拨入库单据,显示从第一个仓库调入另外一个仓库,而如果其中有一个仓库为null,那么只显示那个不为null的仓库。
#3
hyz000012014-04-23 08:46
经过查找发现可以用下面这一行代码:
t4.fname+'To'+t6.fname,

可是如果t4.fname 或者t6.fname 中有一个的数值为null时将会整个字段呈现null.
看看有没有办法解决的。
我自己想到下面这个,一直提示错误:“服务器: 消息 170,级别 15,状态 1,行 5 第 5 行: '=' 附近有语法错误。”
--iif((t6.fname = 'NULL' OR t4.fname ='NULL'),t4.fname+'To'+t6.fname,,isnull(t6.fname,t4.fname)) 仓库,
#4
tlliqi2014-04-23 09:22
'NULL'---不加引号吧
#5
hyz000012014-04-23 09:27
我自己找到解决方案了,虽然花费了不少时间。
看看有木有比较基础的书籍可以参考的。
isnull(T4.fname,'') +case when t5.fbillname='仓库调拨单据' then ' To 'else '' end + isnull( t6.fname,'')仓库,
1