【问题标题】:Left outer join query左外连接查询
【发布时间】:2011-05-09 04:55:11
【问题描述】:

在 Image 表中 - 1 是具有 Primery 键 ID 自动编号和 DeclarationContentId 的表作为来自另一个表的 FK。有两列 GrantedAmount 和 DeclaredAmount 由另一列 AmountType 标识。我想要一个左外连接查询,它将返回一个 for DeclartionContentId 与 GrantedAmount 和 DeclaredAmount 聚集在一行中

【问题讨论】:

  • 请澄清您的问题和/或提供预期结果的示例。
  • 你的两张表叫什么名字?第一个表中有哪些列;第二个表中有哪些列?为什么需要 LOJ 查询 - 而不是常规的内部联接?
  • @Johathan 假设另一个表中只有一列,并且只有一列 DeclarationContentId 作为 PK。如果使用内部连接,它可能会产生预期的结果,我可以。
  • 不清楚你的第二张图是第二张桌子还是预期的结果。

标签: sql-server outer-join


【解决方案1】:

在这里做一些假设

  • 这两个表是declarationcontentdeclarationcontentamount
  • 类型为 1 时你想要授予的数量
  • 类型为 2 时需要声明的数量
  • 你想要零而不是 null
  • 左连接,因为每个声明内容id 可能不代表每种类型

试试这个

SELECT dc.declarationcontentid, 
       Isnull(ga.grantedamount, 0)  grantedamount, 
       Isnull(dc.declaredamount, 0) declaredamount 
FROM   declarationcontent dc 
       LEFT JOIN declarationcontentamount ga 
         ON dc.declarationcontentid = ga.declarationcontentid 
            AND amounttype = 1 
       LEFT JOIN declarationcontentamount dc 
         ON dc.declarationcontentid = ga.declarationcontentid 
            AND amounttype = 2 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2016-02-19
    • 2019-03-08
    相关资源
    最近更新 更多