sql - SQL中的switch函数和Null的无效使用
问题描述
我有一个查询,我希望结果根据他们的“序号”返回个人的 DOB。它正确地返回了个人的姓名,但不是他们正确的出生日期。我正在使用 MAX 函数,因为我需要将所有这些数据放在一行中,如果我不使用它,如果有多个受抚养人与员工相关联,我会得到多行。
但是,如果有多个依赖项而不是对应于 D.SequentialNumber=1 的依赖项,它会拉最大 DOB,这不是我需要的。我在这里想念什么?
以下是我的查询的迷你示例:
SELECT EIN.EIN, E.First_Name, E.Last_Name,
Max(IIf(D.SequentialNumber=1,D.DepFirstName)) AS Cov24_First_Name,
Max(IIf(D.SequentialNumber=1,D.DepLastName)) AS Cov24_Last_Name,
Max(IIf(D.SequentialNumber=1 AND nz(D.DepDOB) > 0, "")) AS Cov24_SSN,
Max(IIf(D.SequentialNumber=1 and D.CoveredIndividualSSN >0, "", d.DepDOB)) AS Cov24_DOB
FROM (tblEmp AS E LEFT JOIN tblEIN AS EIN ON E.EIN = EIN.EIN) LEFT JOIN tblDep AS D ON E.Emp_SSN = D.ResponsibleIndividualSSN
GROUP BY EIN.EIN, E.First_Name, E.Middle_Name, E.Last_Name;
解决方案
我不确定查询:
SELECT EIN.EIN, E.First_Name, E.Last_Name,
Max(IIf(D.SequentialNumber=1,D.DepFirstName, "")) AS Cov24_First_Name,
Max(IIf(D.SequentialNumber=1,D.DepLastName, "")) AS Cov24_Last_Name,
Max(IIf(D.SequentialNumber=1 AND nz(D.DepDOB) > 0, "", 0)) AS Cov24_SSN,
Max(IIf(D.SequentialNumber=1 and D.CoveredIndividualSSN >0, "", d.DepDOB, "")) AS Cov24_DOB
FROM (tblEmp AS E LEFT JOIN tblEIN AS EIN ON E.EIN = EIN.EIN) LEFT JOIN tblDep AS D ON E.Emp_SSN = D.ResponsibleIndividualSSN
GROUP BY EIN.EIN, E.First_Name, E.Middle_Name, E.Last_Name;
推荐阅读
- c++ - 对 int/float 进行排序的最快并行 C++ 排序实现是什么?
- selenium - RPA/Selenium 执行 TIN 匹配
- c - 在 C 中使用指针的目的
- python - Python将变量dict位置传递给函数
- vb.net - 如何使用 TextBox 和 ComboBox 过滤 ListView?
- python - 如何在不导入 os 模块的情况下找到我们正在使用的操作系统?
- python - 我是 python 新手。我尝试运行一个简单的 while 循环,但收到语法错误
- cuda - 推力::合并在内部使用哪种算法?
- html - Google Fonts API / 优化您的字体请求不起作用
- arrays - 在 Swift 中用相同的值分组一周中的几天