首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在列和子查询之间执行操作

如何在列和子查询之间执行操作
EN

Stack Overflow用户
提问于 2021-07-29 19:11:45
回答 1查看 43关注 0票数 0

我想知道如何在列和子查询之间执行操作,我想要做的是将在子查询Impuestos中获得的内容添加到字段Subtotal中,以下是我在本例中使用的查询。

代码语言:javascript
复制
Select 
RC.PURCHID;
LRC.VALUEMST as 'Subtotal',
                  isnull((
                    select sum((CONVERT(float, TD1.taxvalue)/100)*LRC1.VALUEMST ) as a
                           FROM TAXONITEM TOI1
                           inner join TAXDATA TD1 ON (TD1.TAXCODE = TOI1.TAXCODE and RC.DATAAREAID = TD1.DATAAREAID)
                           inner join TRANS LRC1 on (LRC1.VEND = RC.RECID)
                           WHERE TOI1.TAXITEMGROUP = PL.TAXITEMGROUP and RC.DATAAREAID = TOI1.DATAAREAID 
                    ), 0) Impuestos 
       from VEND RC  
             inner join VENDTABLE VTB on VTB.ACCOUNTNUM = RC.INVOICEACCOUNT
             inner join TRANS LRC on (LRC.VEND = RC.RECID)
             inner join PURCHLINE PL on (PL.LINENUMBER =LRC.LINENUM and PL.PURCHID =RC.PURCHID)
             where year (RC.DELIVERYDATE) =2021 and RC.PURCHASETYPE =3 order by RC.PURCHID;

希望有人能在使用子查询操作时给我一些指导。

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 20:46:34

一些脱节的事实可能会有所帮助:

  • SELECT语句只返回一行和一列时,您可以将该语句括在括号中,并将其用作普通值。在您的例子中,假设select sum(......= TOI1.DATAAREAID返回500。然后,外部select的第二列等同于isnull(500,0)

你在你的问题“

  • ”中提到的子查询。请记住,尽管您确实使用了我们前面提到的子查询,但是当它被括在括号中时,它不会被视为子查询(更准确地说,是派生表),而是一个值。因此,"Impuestos“在这一点上只是一个列别名

我不喜欢

  • ,并且在from之前避免使用子查询,这会让事情变得更难读。这里有一个使用apply的解决方案,它将使您的代码保持基本完整:

代码语言:javascript
复制
    Select 
        RC.PURCHID,
        LRC.VALUEMST as 'Subtotal',
        isnull(subquery1.a, 0) as Impuestos 
    from VEND RC  
         inner join VENDTABLE VTB on VTB.ACCOUNTNUM = RC.INVOICEACCOUNT
         inner join TRANS LRC on (LRC.VEND = RC.RECID)
         inner join PURCHLINE PL on (PL.LINENUMBER =LRC.LINENUM and PL.PURCHID =RC.PURCHID)
         outer apply
         (
            select sum((CONVERT(float, TD1.taxvalue)/100)*LRC1.VALUEMST ) as a
            FROM TAXONITEM TOI1
            inner join TAXDATA TD1 ON (TD1.TAXCODE = TOI1.TAXCODE and RC.DATAAREAID = TD1.DATAAREAID)
            inner join TRANS LRC1 on (LRC1.VEND = RC.RECID)
            WHERE TOI1.TAXITEMGROUP = PL.TAXITEMGROUP and RC.DATAAREAID = TOI1.DATAAREAID 
         ) as subquery1
    where year (RC.DELIVERYDATE) =2021 and RC.PURCHASETYPE =3 order by RC.PURCHID;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68581715

复制
相关文章

相似问题

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