sql decode和case when如何转换

select max(decode(c.code,'001',b.ratio)) rt1,
max(decode(c.code,'002',b.ratio)) rt2,
max(decode(c.code,'003',b.ratio)) rt3,
from table1 a
left join table2 b on a.billid=b.ruleid
left join table3 c on a.sourceid=c.billid
group by a.projectid,a.economicid, b.bdgagency
问一下这个decode怎么转换成case when的形式啊

sql
0

2个回答

 decode(c.code,'001',b.ratio)
 =
 case c.code 
 when '001' then b.ratio
 end
0

Oracle的DECODE()和CASE WHEN......
答案就在这里:Oracle的DECODE()和CASE WHEN
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
行转列之decode、case when
行转列统计方法,一般常出现在项目中的多维度统计表中。decode编写简洁,case when相对较灵活;decode目前只在Oracle和DB2数据库中测试可用,其他数据库的兼容性没有测试过;case when 适合大部分数据库,兼容性比较好。 简单案例: 1、创建测试表 CREATE TABLE TEST_BUSINESS ( COMPANYNAME VARCHAR(20), CHAN
行转列case when和decode对比
占位
decode函数与case when 的妙用
1.  SELECT decode(to_char(sysdate,'yyyy'),'NULL','none','2011','Y','INVALID') FROM dual;2.  SELECT (case   when sign(to_number(to_char(sysdate,'yyyy'))+1) > 2011 THEN 'year < 2011' when to_char(...
◆用decode如何实现Case when功能◆
今天一位朋友问这样个问题:rnCase when语句:rnSELECT sum (CASE WHEN T > 24 THEN 1 ELSE 0 END), sum (CASE WHEN T<=24 THEN 1 ELSE 0 END) FROM gzb ;rnrn如果用decode如何实现如上效果
case when 和 decode函数基本使用
decode用法 其中的参数跟查询字段的类型有关系t.kl [code=&quot;sql&quot;] select decode(t.kl,1,'已推送',2,'推送中',3,'推送失败','未推送') from xzm_1 t [/code] case when end 用法 [code=&quot;sql&quot;] select case t.kl ...
sum(decode()) 和 count(case when) 有什么区别
比如 [code=sql] sum(decode(t1.a,' ',1,0)) [/code] 和rn[code=sql] count(case when t1.a=' ' then 1 else 0 end)[/code]
oracle中decode和case when转义的用法
oracle中decode和case whenoracle转义或者替换通常使用decode和case when子句,当转义字段一一对应时使用decode比较好,当多对一的情况使用case when;下面举例说明两者用法decode:SELECT a.c_status,decode(a.c_status,'1','Completed','Canceled') status FROM tconfirm...
case when 转化为 decode 高手解答??!!
rn以下语句是否可以转换为decode函数:rnrn[code=SQL]case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end[/code]
用case when实现decode()函数的功能
原来的oracle select t.ttid,o.organname, t.targettrain, t.creator, DateText(t.TTEnd) as DateRange, //这是自定义的函数 decode(tg.finishedMode, 1...
oracle中的计算函数decode和case when
今天要跟大家聊一聊两个函数,一个是decode()函数,另一个是case when函数,它们两个都是可以写在SQL语句中被oracle数据库识别的计算函数。 1、decode() 例子:它的写法如下decode('a','b','c','d'),其中a,b,c,d可以是其他函数也可以是数值,依据我们自己的情况来使用,它的含义是如果a=b,那么结果显示c,否则d。 翻译成我们更通俗易懂的话就是
SQL的case和when的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相...
sql(case when 条件)
$pro_select ="select a.products_id,a.sgg,a.sdw,a.products_price,a.products_erp,rn c.products_id,c.products_name,d.idppbh,d.sppmcrn from osc_products a,osc_products_description c,brand d rn where a.products_id =c.products_id and a.products_idrn in (select b.products_id from brand_area_product b where b.idppbh= d.idppbh rn and b.idppbh = '" . $brand . "' //如果b.idppbh没有指定为具体的某个值则去掉and b.idppbh = '" . $brand . "' 这个查询条件,如果指定则加上这个条件) rn and c.products_name like '%". $pro_name ."%' ";rnrn如果b.idppbh没有指定为具体的某个值则去掉and b.idppbh = '" . $brand . "' 这个查询条件,如果指定则加上这个条件这个 sql语句怎样改?大家多多指教谢谢,,,rnrn$pro_select ="select a.products_id,a.sgg,a.sdw,a.products_price,a.products_erp,rn c.products_id,c.products_name,d.idppbh,d.sppmcrn from osc_products a,osc_products_description c,brand d rn where a.products_id =c.products_id and a.products_idrn in (select b.products_id from brand_area_product b where b.idppbh= d.idppbh rncase when 。。。。。。then ....rnand b.idppbh = '" . $brand . "'rn) and c.products_name like '%". $pro_name ."%' ";
sql case when
select case sum(f_amount) when null then 0 else sum(f_amount) end as f_amount1 from cc_SaleQuoteFee where FID = 4560rn为什么结果还是null,而不是0?????
SQL Case when 的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。 [code=&quot;java&quot;]--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' EN...
sql case when 语句
我有一个表:rn id yzh thf qxfrn 1 23.00 4.00 8.00rn 2 0.00 12.76 4.20rn 3 5.00 45.44 4.44rn 4 48.00 12.22 3.33rn我现在需要创建一个视图rn 当 yzh=!0 or yzh=!5 时,thf=thf+2 否则thf不变rn视图结果应该为rnid yzh thf qxfrn 1 23.00 6.00 8.00rn 2 0.00 12.76 4.20rn 3 5.00 45.44 4.44rn 4 48.00 14.22 3.33rnrn也就是当yzh不等于0或5时,thf加上2.rn谢谢rn rn
SQL Case when 的使用方法
SQL Case when 的使用方法
sql:常用:case when
实例1:     sql只查一次未优化 SELECT     * FROM     (         SELECT             COUNT(company_name) AS countnum,             company_name,             tel_tru,             tel_full ...
sql 条件查询case when
select *rn from (case when(t1.bxdw = t2.bxdw) thenrn select t1.bxdw bxdw,rn (t1.zje - t2.zje) pk,rn t1.tpfy tpfy,rn (t1.yx - t2.tpsm) yx,rn t2.tpsm tpsm,rn (t1.zje - t2.zje + t1.tpfy) zje elsern select t1.bxdw bxdw,rn t1.zje pk,rn t1.tpfy tpfy,rn t1.yx yx,rn (t1.yx - t1.yx) tpsm,rn (t1.zje + t1.tpfy) zje endrn from (select bxdw,rn sum(zjje) zje,rn count(*) yx,rn sum(tpfy) tpfyrn from CWXT_JPDG_B_YDXXrn group by bxdw) t1,rn (select bxdw, sum(zjje) zje, count(*) tpsmrn from CWXT_JPDG_B_YDXXrn where sftp = 1rn group by bxdw) t2rn rn )rn在when条件哪里报缺失右括号的错误 请问错误是什么 怎样改正
sql case when问题~
比如数据库有2列 userid usernamern想查询这2列 其中 如果username为null 则用'-'代替rnrnselect case username when () then '-' else username from tablernrn()中的要怎么填? 我试了好几种方式都不对。。。。。。求教~~~~~~
sql case when问题
现有一张统计表rnshop_id Total yeartype timern 1 10 'ty' 2009-12-01rn 1 25 'ly' 2008-12-01rn 2 15 'ty' 2009-12-01rn 2 32 'ly' 2008-12-01rn 3 200 'ty' 2009-12-01rn 3 23 'ly' 2008-12-01rnrn现在的需求是需要计算出去年和今年的total显示在两列中rn列如:rnthisyeartotal lastyeartotalrn 10 25rn 15 32rn 200 23rnrn求SQL语句,case when + group by 条件可否是数据集?请教各位
sql case when的用法?
sql case when的用法?
sql语句case when
当ACFLOW_ACCOUNTTYPE='0' AND (ACFLOW_BEFOREAVAILABLE < ACFLOW_AFTERAVAILABLE)的情况下ACFLOW_CHARGEAMOUNT as availableIncomeAmountrn这个sql语句要怎么写啊?case when 不能加as。。。
SQL语句 case when then
有两个SUM字段,SQL语句大概为rnrnrnselect····rn sum(number1),rn sum(number2)rnfrom tablenamernwhere`````rn现在用case when 再加一个字段 当sum(number1)-sum(number2)>=0时,字段值为 “大于零 +数字(数字值就是 sum(number1)=sum(number2)的值) ” 当sum(number1)-sum(number2)>=0时rn字段值为“小于零+数字” rn这个字段的SQL怎么写?rn
SQL Case when then 语句.
例如一个表中有四个字段 a b c drn我想判断如果a为null则显示b,如果b也为null则显示c,如果c也为null则显示d,否则什么都不显示rn  请问用SQL语句怎么实现?rn请各位高手帮帮忙啊.rn最好能使用case when then else end 语句实现
SQL CASE WHEN 问题
已知表A:f_id,f_typern查询条件rn如果f_type为1查询该表前20条数据rn否则查询前100条rn这个该怎么写呢 ?rn[code=sql]rnSELECTrn CASErn WHEN type = 1 THENrn (SELECT TOP 20 * FROM a )rn ELSErn (SELECT TOP 100 * FROM a )rn END AS lstrn FROMrn a rn[/code]rn这里好像是错的,求帮助
sql的case when和map.get()
数据导出,需要把其中一些字段的数据做转换,比如A---->1,B--->2。目前有2想到的2种思路:rn1、sql的case whenrncase Column_name rnwhen 'A' then '1'rnwhen 'B' then '2'rn2、用properties或者maprn把对应码放进properties文件:A=1rn或map.put('A','1')rn问题是不知它们那种方法更优?感觉第二种更易维护rn希望各位给点经验意见rn
sql中,decode,case when 有什么区别?各自的用法?
decode,case when 有什么区别?各自的用法?
紧急求一个SQL的写法:关于decode或case when;
要求:如果字段id的第一位为1或2,显示为a,前两位为33或44,则显示为bb,前三位为555或666,则显示为ccc,这个SQL该怎么写?最好用decode,case when好象效率不高。rn谢谢!
case when 如何嵌套
count(CASE WHEN (case int_xmlx when 1 then (select shoufeilb_ba from HIS361.hospital.dbo.yaopin where yaopin.id = zy_jsmxb.int_xmid) when 2 then (select shoufeilb_ba from HIS361.hospital.dbo.p_sfinfo where p_sfinfo.sf_id = zy_jsmxb.int_xmid) end)='1101068' THEN sum(fl_dj*fl_sl*fl_zfbl) ELSE '' END) as XiBYZLZhPFrn 这样写对不,请各位大侠指点
case when
数据库菜鸟。。。请问大家,我要实现这么一个功能:一个表有5个字段比如 one two three four five 我想用case when 做如下功能,就是先判断five 如果不为空则取这个值,如果为空判断four是否为空,如果不为空取four 也就是从后往前,取这五列中第一个不为空的值 希望大家帮忙
case when …… then ……
TableA?rnName Course Gradern张三 语文 75rn张三 数学 80rn张三 英语 90rn李四 语文 95rn李四 数学 55rnrn要求输出成如下的格式:rnName 语文 数学 英语rn张三 75 80 90rn李四 95 55 0rnrnselect Name, rnsum(case Course when ‘语文‘ then Grade else 0 end) as 语文,rnsum(case Course when ‘数学‘ then Grade else 0 end) as 数学,rnsum(case Course when ‘英语‘ then Grade else 0 end) as 英语 rnfrom TableA rngroup by Name?rnrn上面的代码 意思 不理解0.0 也不理解逻辑rnselect 分数,类别=Case rnWHEN 分数>=85 THEN '优秀'rnWHEN 分数>=75 THEN '良好'rnWHEN 分数>=60 THEN '及格'rnELSE '不及格'rnENDrnfrom 成绩表rn这段代码我到理解....rnrn
case when then
一条sql语句就能让你case when then怎么用,什么时候用
CASE WHEN
UPDATE STUDENT A SET(SCRC)=(rn CASE A.POINTrn WHEN 0.9 THEN rn CASE A.LLrn WHEN A.LL>=0.65 AND A.LL<0.7 THEN rn 8rn WHEN A.LL>=0.7 THEN 9 ENDrn WEHN 0.85 THEN rn CASE A.LLrn WHEN A.LL>=0.85 THEN 2rn ELSE 3rn ENDrn ENDrn)rnrnrn WHEN A.LL>=0.65 AND A.LL<0.7 THEN 这里缺少关键字,少什么啊
SQL中case when的用法
首先,新建一个表: create table battle(riqi date,result varchar(10)) 插入数据: insert all into battle values(to_date('2005-05-09','YYYY-MM-DD'),'win') into battle values(to_date('2005-05-09','YYYY-M...
SQL语句 CASE WHEN的用法
select Id , case when Id=1 then '等于1' when Id &gt;=60 then '大于60' --注意各结果的数据类型须一致,int和时间等不能转为字符串没出错 when Id &lt;60 then '小于60' else 'ok' end AS result , OwnId from ContentDetectionRecord...
sql查询case when 注意事项
第一种case when A is null then 'false' else 'true' end 第二种case A when  null then 'false' else 'true' end 这两种语法没错,但是判断null必须用第一种
带有逻辑判断的sql(case when)
查询数据的时候,添加逻辑转换:
sql 判断 when case 吗?
[code=SQL]rnid username pidrn1 wang 0rn2 li 0rn3 xiao 1rn4 zhao 2rn[/code]rn我想要的结果是rn凡是pid=0 的 输出的 username='超级'rnrn否则就按照原来的 数值显示rnrn[code=SQL]rn--我想得到的结果rn/*rnusername pidrn超级 0rn超级 0rnxiao 1rnzhao 2rn*/rn[/code]rn很不好意思我在sql语句方面 很菜的[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]rnrn程序稍微比数据库好点[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/4.gif][/img]rnrnrn我的rn[code=SQL]rnselect username,case pid when '0' then '超级' end from tablern[/code]rn这样的结果是username 根本不受影响啊...我晕了 菜
case when sql语句问题
当ACFLOW_ACCOUNTTYPE='0' AND (ACFLOW_BEFOREAVAILABLE < ACFLOW_AFTERAVAILABLE)的情况下ACFLOW_CHARGEAMOUNT as availableIncomeAmount n这sql语句怎么写?case when不能加as啊。。。
SQL where条件case when then
where( case when @time1<>@time2 thenrn(convert(char(10),so.PayDate,120) between @time1 and @time2)rncase when @time1=@time2 then (convert(char(10),so.PayDate,120)=@time1))rn求大神改改。如果@time1=@time2 条件就是 where convert(char(10),so.PayDate,120)=@time1rn如果@time1<>@time2 条件就是 where convert(char(10),so.PayDate,120) between @time1 and @time2