标题:case when 语句用法请教
只看楼主
lgp740401_72
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-4-17
结帖率:100%
已结贴  问题点数:20 回复次数:6 
case when 语句用法请教
CASE  tb_滑梯日工资_b.工序  WHEN '精裁' THEN (Select 精裁道数 as 道数 from tb_生产跟踪表_b where jlsjh_tb_生产跟踪表='_4270PHYBJ_4270PHYBK' AND rtrim(ltrim(item))='E1') when  '钻孔'then (Select 精裁道数 as 道数 from tb_生产跟踪表_b where jlsjh_tb_生产跟踪表='_4270PHYBJ_4270PHYBK' AND rtrim(ltrim(item))='E1') ELSE ( Other select 道数 from tb_道数档案) END
要求只能用一句语句(因特殊设置,作为SQL连接表的下拉列表框数据源)
当前编辑表为tb_滑梯日工资_b,有字段:道数,工序(值:有可能是精裁、钻孔,...),tb_生产跟踪表_b中有字段精裁道数,钻孔道数,想实现如下:
当前表工序为'精裁'时,选择Select 精裁道数 as 道数 from tb_生产跟踪表_b where jlsjh_tb_生产跟踪表='_4270PHYBJ_4270PHYBK' AND rtrim(ltrim(item))='E1')
作为数据源;工序为'钻孔'时,选择Select 钻孔道数 as 道数 from tb_生产跟踪表_b where jlsjh_tb_生产跟踪表='_4270PHYBJ_4270PHYBK' AND rtrim(ltrim(item))='E1')
作为数据源;工序为'。。。'时,选择select 道数 from tb_道数档案作为数据源,大侠们,这效果SQL语句怎么写?

[ 本帖最后由 lgp740401_72 于 2014-5-13 08:22 编辑 ]
搜索更多相关主题的帖子: 数据源 where 滑梯 钻孔 
2014-05-13 07:15
lgp740401_72
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-4-17
得分:0 
引用别人的语句SELECT  *,
        CASE COALESCE(age, 0)
        WHEN '0' THEN
                (
                SELECT  MAX(age)
                FROM    who wi
                JOIN    ages ai
                ON      ai.whoid = wi.wid
                WHERE   wi.father = w.father
                        AND wi.mother = w.mother
                )
        ELSE
                age
        END AS newage
FROM    who w
LEFT JOIN
        ages a
ON      a.whoid = w.wid
ORDER BY
        newage

我修改自己的语句,但还是报错
select  CASE 工序  WHEN '精裁' THEN (Select 精裁道数 as 道数 from tb_生产跟踪表_b where jlsjh_tb_生产跟踪表='_4270PHYBJ_4270PHYBK' AND rtrim(ltrim(item))='E1') when  '钻孔'then (Select 精裁道数 as 道数 from tb_生产跟踪表_b where jlsjh_tb_生产跟踪表='_4270PHYBJ_4270PHYBK' AND rtrim(ltrim(item))='E1') ELSE ( Other select 道数 from tb_道数档案) END from tb_滑梯日工资_b where jlsjh='_4270PHYCF_4280PHYCG'
报“select" 后面语法错误!

[ 本帖最后由 lgp740401_72 于 2014-5-14 15:22 编辑 ]
2014-05-13 08:32
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:7 
报错提示
2014-05-14 09:16
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
得分:7 
乍一看2楼的语句没看出来啥毛病,倒是觉得1楼的语句有问题?
这字段定义的咋全中文?

大家都是朋友,有空就来坐坐!
2014-05-14 10:44
lgp740401_72
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-4-17
得分:0 
回复 3 楼 tlliqi
报“case"附近有语法错误
2014-05-14 15:18
lgp740401_72
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-4-17
得分:0 
回复 4 楼 volte
定义中文字段,难道不行?
2014-05-14 15:18
lgp740401_72
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-4-17
得分:0 
程序代码:
SELECT     CASE WHEN
                          (SELECT     工序
                            FROM          tb_滑梯日工资_b
                            WHERE      jlsjh = '_42F0VBGYC_42F0VBGYD') = '精裁' THEN '精裁道数' WHEN
                          (SELECT     工序
                            FROM          tb_滑梯日工资_b
                            WHERE      jlsjh = '_42F0VBGYC_42F0VBGYD') = '钻孔' THEN '钻孔道数' END AS 道数
FROM         TB_生产跟踪表_B
WHERE     (jlsjh_tb_生产跟踪表 = '_40Q0S6ZM7_40Q0S6ZM8') AND (RTRIM(LTRIM(item)) = 'w71')

得到的这样结果,不对!

应该得到这样的结果才是正确的啊!
2014-05-14 16:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431450-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.380121 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved