基于select as列名的sql连接

nukf8bse  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(380)

所以在一张table上我可以用 replace 以及 charindex 要提取与另一个表中的pk相关的特定id,我想根据修剪后的值连接另一个表中的数据,我该如何做?

select top 100 *, Replace(Left(LogValue,Charindex(';', LogValue) - 1) ,'RtaId=', '') as TaskID, PrmRoutingTask.*    
  from SytLog       
       inner join  PrmRoutingTask on RtaId = TaskID
 where LogTableName like '%Routing%' and LogValue like '%RtaAniId=397%' 
 order by 5 desc;

我遇到的问题是我创建的temp列名( TaskID )在内部联接中不起作用,实际上taskid的结果引用了 RtaIdRoutingTask table。

2exbekwf

2exbekwf1#

假设 LogValue 属于第一个表,可以使用名为 TaskID 如果生成子查询作为主查询的表表达式。
例如,可以在表表达式中生成列 a 通过这样做:

select top 100 
  a.*,
  PrmRoutingTask.*

from (
  select *,
    Replace(Left(LogValue,Charindex(';', LogValue) - 1) ,'RtaId=', '') as TaskID
  from SytLog
) a

inner join PrmRoutingTask on PrmRoutingTask.RtaId = a.TaskID

where LogTableName like '%Routing%' 
  and LogValue like '%RtaAniId=397%' 

order by 5 desc

相关问题