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

sql case when 问题

lgp740401_72 发布于 2014-05-04 11:52, 796 次点击
SELECT     item, prthick, prwidth, prlongth, setpic, set1pic, set2pic, set3pic, set4pic, setcab, xjtrue, Zktrue, sj1s AS qc1s, sj2s AS qc2s, sj3s AS qc3s, sj4s AS qc4s,zkqc = (CASE WHEN Zktrue = .f. THEN 0 ELSE sjjc - sjzk END), pqqc = (CASE WHEN Zktrue = .f. THEN sjjc - sjpq ELSE sjzk - sjpq END) FROM TB_生产跟踪表_B
老是报then附近有语法错误?请教各位大侠。
但在SQL中它改为这样了:SELECT     item, prthick, prwidth, prlongth, setpic, set1pic, set2pic, set3pic, set4pic, setcab, xjtrue, Zktrue, sj1s AS qc1s, sj2s AS qc2s, sj3s AS qc3s, sj4s AS qc4s,(CASE WHEN Zktrue = 'false' THEN 0 ELSE sjjc - sjzk END) as zkqc, (CASE WHEN Zktrue = 'false' THEN sjjc - sjpq ELSE sjzk - sjpq END)as  pqqc FROM TB_生产跟踪表_B

[ 本帖最后由 lgp740401_72 于 2014-5-4 12:48 编辑 ]
4 回复
#2
volte2014-05-08 13:28
.f.  有这么写的吗?
#3
volte2014-05-08 13:28
啥程序这样的写法?
#4
mxbing19842014-08-28 14:24
你的Zktrue是类型啊,你这是判断真假
估计是
CASE WHEN Zktrue = '.F.' THEN 0 ELSE sjjc - sjzk END
或者
CASE WHEN Zktrue = 0 THEN 0 ELSE sjjc - sjzk END
关键是看你Zktrue在数据库的类型

[ 本帖最后由 mxbing1984 于 2014-8-28 14:29 编辑 ]
#5
wmcwww2014-09-16 11:30
如果Zktrue = 0 说明Zktrue是数值型变量,不能再写Zktrue = .F.;或者如果可以Zktrue = .F.,说明Zktrue是逻辑变量,不能写Zktrue = 0 。
1