所以这就是我的情况。我有3个表格(tblEmployeesinfo
,sqlSumrepMTC
,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
上不存在,我的问题是此记录不会显示在内部联接中,因为它在两个表上都没有值。我想要实现的只是在另一个表中不存在时显示0值。这是我的报告。
Employeeno employeename 15th 30th
01 james 10 20
02 Chris NULL 50
第一个记录将出现在报告中,因为它在两个表中都存在记录,第二个记录不会出现在第一个表中的null。如果一个值为null或另一个值丢失,我只需要它出现在报告中。提前致谢
答案 0 :(得分:0)
你有两个连接!因此,如果sqlSumrepMTC15th
中没有记录,则需要用LEFT JOIN替换第二个连接。如果可能,sqlSumrepMTC15th
AND tblEmployeesInfo
中没有联接记录,则需要使用LEFT JOIN替换这两个联接。
此外,您可以通过
替换NULLSELECT CASE
WHEN attribute IS NULL
THEN 0
ELSE attribute
END AS resultColumName,
nextAttribute
FROM ...