【发布时间】:2018-02-09 21:59:51
【问题描述】:
我正在尝试创建一个报告,它只显示最新的CoverageGroup,包括空值。
这是当前代码(没有 MAX() 函数):
SELECT
p.AcctNumber,
c.sDate,
ISNULL(cv.Coveragegroup,0) AS [CoverageGroup],
wd.Code,
ISNULL(CO2.lname,'Patient') AS [PrimIns],
p.DefaultCoverageGroup,
ISNULL(cv.LevelOfCoverage,0) AS [LevelOfCoverage]
FROM
Patient p
FULL OUTER JOIN
Charge c ON c.PatientID = p.IDPatient
FULL OUTER JOIN
Coverage cv ON cv.PatientiD = p.IDPatient
FULL OUTER JOIN
WorkDescriptor wd ON wd.IDWorkdescriptor = c.WorkDescriptorID
FULL OUTER JOIN
InsCompany ic on ic.IDInsCompany = cv.InsCompanyID
FULL OUTER JOIN
Contact co2 on co2.IDContact = ic.ContactID
WHERE
p.AcctNumber IN (256500, 256569)
AND (cv.Coveragegroup = p.DefaultCoverageGroup OR p.DefaultCoverageGroup = 0)
AND (cv.LevelOfCoverage = 1 OR cv.LevelOfCoverage IS NULL)
ORDER BY
p.AcctNumber, c.sDate
我尝试了MAX(COALESCE... 和MAX(CASE WHEN... 的不同变体,但它们不起作用,或者它们不会显示CoverageGroup 为空的帐户。
知道我该怎么做吗?我在 SQL 方面的专长是初学者。
谢谢!
【问题讨论】:
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或其他完全不同的东西。 -
我相信是sql-server。
标签: sql-server null max aggregate-functions where-clause