【问题标题】:SQL - How to include NULL values when using MAX() function?SQL - 使用 MAX() 函数时如何包含 NULL 值?
【发布时间】:2018-02-09 21:59:51
【问题描述】:

我正在尝试创建一个报告,它只显示最新的CoverageGroup,包括空值。

Sample - Current VS Want

这是当前代码(没有 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?请添加标签以指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或其他完全不同的东西。
  • 我相信是sql-server。

标签: sql-server null max aggregate-functions where-clause


【解决方案1】:

可能是因为这个:

AND (cv.Coveragegroup = p.DefaultCoverageGroup OR p.DefaultCoverageGroup = 0)

这里实际指定不允许为NULL

您可以通过将其更改为以下内容来避免它:

AND (cv.Coveragegroup = p.DefaultCoverageGroup OR p.DefaultCoverageGroup = 0 OR cv.Coveragegroup IS NULL)

【讨论】:

  • 我发布的代码确实显示了空值,但是,当我添加另一行如 MAX(COALESCE... 或 MAX(CASE WHEN...) 时(试图仅显示最新的 CoverageGroup) ,只有这样它才不会显示具有空 CoverageGroup 的帐户。
  • 好的。请记住,当您进行聚合时,它通常会消除 NULL 值。您可以通过执行一个 SELECT 语句来获得您想要的结果,然后执行一个 UNION ALL 语句,其中您只显示具有 NULL 值的行。
  • 我之前没有做过UNION ALL,但我可以试试。谢谢。
  • 这很简单..SELECT * FROM Table1 UNION ALL SELECT * FROM Table2。唯一要注意的是,表的大小必须与列(和数据类型)相同。
猜你喜欢
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多