繁体   English   中英

使用内部联接的SQL

[英]SQL using inner join

这就是我的情况。 我有3个表( tblEmployeesinfosqlSumrepMTCsqlSumrepMTC15th ),我使用内部sqlSumrepMTC15th显示此信息:

SELECT
       SQLSummRepMTC."RepCompany", SQLSummRepMTC."WHTax",
       SQLSummRepMTC."Company", SQLSummRepMTC."MonthName",
       SQLSummRepMTC."YearVal", SQLSummRepMTC."Basis",
       tblEmployeesInfo."LastName", tblEmployeesInfo."FirstName",
       tblEmployeesInfo."Company", tblEmployeesInfo."MInitial", 
       tblEmployeesInfo."Division", sqlSumrepMTC15th."WHTax",
       sqlSumrepMTC15th."Basis"
FROM
   {
     oj ("BIOMETRICS"."dbo"."SQLSummRepMTC" SQLSummRepMTC INNER JOIN
     "BIOMETRICS"."dbo"."tblEmployeesInfo" tblEmployeesInfo 
     ON SQLSummRepMTC."EmployeeNo" = tblEmployeesInfo."EmployeeNo")
     INNER JOIN "BIOMETRICS"."dbo"."sqlSumrepMTC15th" sqlSumrepMTC15th
     ON tblEmployeesInfo."EmployeeNo" = sqlSumrepMTC15th."EmployeeNo"
  }
  ORDER BY
      SQLSummRepMTC."Basis" ASC,
      tblEmployeesInfo."Company" ASC,
      tblEmployeesInfo."LastName" ASC

假设有一个雇员在sqlSumrepMTC有其字段Taxvalue为50的记录,但是在sqlSumrepMTC15th上却不存在。我的问题是该记录将不会显示在内部sqlSumrepMTC15th中,因为它在两个表中都没有值。 我要实现的只是在另一个表中不存在时显示0值。 这是我的报告样子。

    Employeeno      employeename   15th      30th
       01               james       10        20
       02                Chris      NULL      50

第一条记录将出现在报告中,因为它在两个表中都有两条记录,而第二条记录由于在第一个表中为空而不会存在。 如果一个值是null或另一个值缺失,我只需要它出现在报告中即可。 提前致谢

您有两个加入! 因此,如果sqlSumrepMTC15th没有记录, sqlSumrepMTC15th需要用LEFT JOIN替换第二个联接。 如果有可能, sqlSumrepMTC15th tblEmployeesInfo没有sqlSumrepMTC15th记录, sqlSumrepMTC15th需要用LEFT JOIN替换两个联接。

此外,您可以将NULL替换为

SELECT CASE
         WHEN attribute IS NULL
              THEN 0
              ELSE attribute 
         END AS resultColumName,
       nextAttribute
FROM ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM