首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL select将行数据显示为varchar项的列

SQL select将行数据显示为varchar项的列
EN

Stack Overflow用户
提问于 2012-11-23 12:46:08
回答 2查看 604关注 0票数 0

这是我用来生成表的查询:

代码语言:javascript
复制
SELECT cu.idchanneluser AS Approver,
     mcr.idrule AS Rule,
     mrd.idseq AS Seq,
     mcr.idcust AS CustID,
     cu.iduser AS USERID
FROM mstchanneluser cu,
     mstcatruledetail mrd,
     mstcatrule mcr
WHERE idchannel='01'
     AND mrd.idlist=cu.iduser
     AND mrd.idrule=mcr.idrule
     AND mcr.nbrauth='2'
     AND mcr.isautoauth='N'

这是result的快照:

但是我想要这样的结果:

代码语言:javascript
复制
   FirstAuthorizer SecondAuthorzier Rule    
   rohitcorp        ajitcorp         3090  
   CORPTEST         TESTCORP         8634
   ABHIMAKER        CORPTEST         11705

我尝试了这个查询:

代码语言:javascript
复制
SELECT CASE WHEN idseq = '0' THEN idchanneluser ELSE NULL END AS Approver,
    case when idseq = '1' THEN idchanneluser  ELSE NULL END AS secondApprover,
    cu.idchanneluser AS Approver,
    mcr.idrule AS Rule,
    mrd.idseq AS Seq,
    mcr.idcust AS CustID,
    cu.iduser AS USERID
FROM mstchanneluser cu, 
    mstcatruledetail mrd, 
    mstcatrule mcr 
WHERE idchannel='01'
    AND mrd.idlist=cu.iduser
    AND mrd.idrule=mcr.idrule 
    AND mcr.nbrauth='2'
    AND mcr.isautoauth='N'

然后它会返回给我检查快照的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-23 12:48:31

这是从您的第二个查询派生而来,您只需要使用MAX并按mcr.idrule对它们进行分组

代码语言:javascript
复制
SELECT MAX(CASE WHEN idseq = '0' THEN idchanneluser ELSE NULL END) AS Approver
    ,  MAX(CASE WHEN idseq = '1' THEN idchanneluser ELSE NULL END) AS secondApprover
    ,  mcr.idrule AS RULE
FROM   mstchanneluser cu
    ,  mstcatruledetail mrd
    ,  mstcatrule mcr
WHERE idchannel = '01'
    AND mrd.idlist = cu.iduser
    AND mrd.idrule = mcr.idrule
    AND mcr.nbrauth = '2'
    AND mcr.isautoauth = 'N'
GROUP BY mcr.idrule
票数 3
EN

Stack Overflow用户

发布于 2012-11-23 18:46:55

oracle中使用分析函数领先滞后的另一种方法

代码语言:javascript
复制
select tab.y FirstAuthorizer,tab.x SecondAuthorzier,tab.rule from
(
select lead(appprover,0) over (partition by rule order by seq) x ,
lag(appprover,1) over (partition by rule order by seq) y,
rule
from tbl ) tab
where tab.y is not null;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13523235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档