【问题标题】:I want to concatenate the result of these these two select queries as four columns in one table我想将这两个选择查询的结果连接为一张表中的四列
【发布时间】:2015-03-05 20:02:47
【问题描述】:
select 
    SUM (cp.TotalAmount) as totalPaymentamount,
    lvl4.SubSubsidaryAccountName as account1
from 
    TBLCPVMaster cp,TBLLevel4 lvl4
where 
    cp.SubSubsidaryAccountId = lvl4.SubSubsidaryAccountCode  
group by 
    lvl4.SubSubsidaryAccountName

select 
    SUM (cr.TotalAmount) as totalReciveamount,
    lvl4_2.SubSubsidaryAccountName as account2
from 
    TBLCRVMaster cr, TBLLevel4 lvl4_2
where 
    cr.SubSubsidaryAccountId = lvl4_2.SubSubsidaryAccountCode 
group by 
    lvl4_2.SubSubsidaryAccountName 

结果表应该有 4 列...请帮助

提前致谢

【问题讨论】:

  • 你有什么问题?我看到的只是两条 SQL 语句和一个预期的结果。
  • 这是两个不同的查询,结果是两个不同的表,每个表有两列。我想将这两个表的所有列连接在一起
  • 请将其添加到您的问题中,而不是仅仅将其放在可能会错过的 cmets 中。
  • 现在你知道了!请给我一个答案:D
  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(20 多年前),不鼓励使用它

标签: sql sql-server qsqlquery


【解决方案1】:

您确实应该开始使用 ANSI-92 的连接语法。已经25年了。

with Payments as
(
    select SUM (cp.TotalAmount) as totalPaymentamount
        ,   lvl4.SubSubsidaryAccountName as account1
    from TBLCPVMaster cp
    join TBLLevel4 lvl4 on cp.SubSubsidaryAccountId = lvl4.SubSubsidaryAccountCode 
    group by lvl4.SubSubsidaryAccountName
)
, Receipts as
(
    select SUM (cr.TotalAmount) as totalReciveamount
        , lvl4_2.SubSubsidaryAccountName as account2
    from TBLCRVMaster cr
    join TBLLevel4 lvl4_2 on cr.SubSubsidaryAccountId = lvl4_2.SubSubsidaryAccountCode 
    group by lvl4_2.SubSubsidaryAccountName 
)

select p.totalPaymentAmount
    , p.account1
    , r.totalReciveAmount
    , r.account2
from Payments p
cross join Receipts r

【讨论】:

  • 感谢您的回答.. 但它说无效的列名
  • 你必须给子查询一个别名才能工作。我在上面编辑了我的回复。
  • 仍然无法正常工作 :( totalreciveamount 和 account 2 无效的列名 :(
  • 哦,天哪。我发布的原始代码不会做你想做的事。您需要以不同的方式获得两个结果集。这是一种方法。
  • 实际上我是编写 sql 查询的初学者,这些连接真的很糟糕 :( 仍然无法正常工作 :D
【解决方案2】:

我只是对我认为您要达到的目标进行最简单的理解...获取每个帐户的总支付和总收入。

select 
    lvl4.SubSubsidaryAccountName, -- surely you only need name once?
    SUM (cp.TotalAmount) as totalPaymentamount,
    SUM (cr.TotalAmount) as totalReciveamount
from 
    TBLLevel4 lvl4
    left join TBLCPVMaster cp 
        on cp.SubSubsidaryAccountId=lvl4.SubSubsidaryAccountCode
    left join TBLCRVMaster cr
        on cr.SubSubsidaryAccountId=lvl4_2.SubSubsidaryAccountCode
group by lvl4.SubSubsidaryAccountName

【讨论】:

  • 感谢您的 rply ,,,按照这种方式,它只在两个表中获取两个相同的帐户,并且不显示不同的帐户
  • 如果我理解您的评论,您想要所有帐户,无论他们是否已付款,请使用我所做的编辑尝试上述操作。
  • 再次感谢伙计!!你明白我的意思.. 我必须创建收据和付款帐户报告,这就是为什么我需要两个具有两个帐户名称的查询来分别显示收据帐户和付款帐户
猜你喜欢
  • 2012-12-11
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多