如何消除SQL中的NULL字段

2024-04-17

我正在为 SQL Server 2008 R2 开发 TSQL 查询。我正在尝试开发此查询来识别一条记录/客户。由于其中一些值为 NULL,因此我目前正在对大多数表执行 LEFT JOINS。但 LEFT JOIN 的问题是,现在我为某些客户端获得 > 1 条记录。

但是,如果我将其更改为 INNER JOIN,则某些客户端将被完全排除,因为它们的这些列具有 NULL 值。如何将查询结果限制为只有一条记录/客户端,而不管 NULL 值如何?如果存在非 NULL 值,那么我希望它选择具有非 NULL 值的记录。 这是我当前的一些输出:

group_profile_id    profile_name    license_number  is_accepting    is_accepting_placement  managing_office region  vendor_name vendor_id   applicant_type  Office Address  status_description  Cert Date2  race    ethnicity_desc  religion
9CD932F1-6BE1-4F80-AB81-0CE32C565BCF    Atreides Foster Home 1  Atreides1               1   Yes Manchester, NH  Gulf Atlantic   Atreides1   00000007                Treatment Foster Home   4042 Arrakis Avenue, Springfield, VT  05156 Open/Re-opened  2011-06-01 00:00:00.000 NULL    NULL    NULL
DCE354D5-A7CC-409F-B5A3-89BF664B7718    Averitte, Leon and Sandra   00000044                1   Yes Birmingham, AL  Gulf Atlantic   AL Averitte, Leon and Sandra    00000044                Treatment Foster Home   3816 5th Avenue, Bessemer, AL  35020, (205)482-4307 Open/Re-opened  2011-08-05 00:00:00.000 NULL    NULL    NULL
DCE354D5-A7CC-409F-B5A3-89BF664B7718    Averitte, Leon and Sandra   00000044                1   Yes Birmingham, AL  Gulf Atlantic   AL Averitte, Leon and Sandra    00000044                Treatment Foster Home   3816 5th Avenue, Bessemer, AL  35020, (205)482-4307 Open/Re-opened  2011-08-05 00:00:00.000 Caucasian/White Non Hispanic    NULL
AD02A43C-6F38-4F35-8C9E-E12422690BFB    Bass, Matthew and Sarah 00000076                1   Yes Jacks    on, MS Central Gulf Coast  MS Bass, Matthew and Sarah  00000076                Treatment Foster Home   506 Eagelwood Drive, Florence, MS  39073, (601)665-7169 Open/Re-opened  2011-04-01 00:00:00.000 NULL    NULL    NULL
AD02A43C-6F38-4F35-8C9E-E12422690BFB    Bass, Matthew and Sarah 00000076                1   Yes Jackson, MS Central Gulf Coast  MS Bass, Matthew and Sarah  00000076                Treatment Foster Home   506 Eagelwood Drive, Florence, MS  39073, (601)665-7169 Open/Re-opened  2011-04-01 00:00:00.000 Caucasian/White NULL    Baptist

您可以看到 Averitte 和 Bass 个人资料名称都有一条种族、民族、宗教为 NULL 的记录。如何消除这些行(第 2 行和第 4 行)?

这是我当前的查询:

select distinct
        gp.group_profile_id,
        gp.profile_name,
        gp.license_number,
        gp.is_accepting,
        case when gp.is_accepting = 1 then 'Yes'
             when gp.is_accepting = 0 then 'No '
                        end as is_accepting_placement,
        mo.profile_name as managing_office,
        regions.[region_description] as region,     
        pv.vendor_name,
        pv.id as vendor_id,
        at.description as applicant_type,
        dbo.GetGroupAddress(gp.group_profile_id, null, 0) as [Office Address],
        gsv.status_description,
        ri.[description] as race,
        ethnicity.description as ethnicity_desc,
        religion.description as religion
from  group_profile gp With (NoLock)
    --Office Information
        inner join group_profile_type gpt With (NoLock) on gp.group_profile_type_id = gpt.group_profile_type_id and
                    gpt.type_code = 'FOSTERHOME' and gp.agency_id = @agency_id and gp.is_deleted = 0
        inner join group_profile mo With (NoLock) on gp.managing_office_id = mo.group_profile_id
        left outer join payor_vendor pv With (NoLock) on gp.payor_vendor_id = pv.payor_vendor_id
        left outer join applicant_type at With (NoLock) on gp.applicant_type_id = at.applicant_type_id and at.is_foster_home = 1
        inner join group_status_view gsv With (NoLock) on gp.group_profile_id = gsv.group_profile_id and gsv.status_value = 'OPEN' and gsv.effective_date =  
                            (Select max(b.effective_date) from  group_status_view b  With (NoLock)
                            where gp.group_profile_id = b.group_profile_id)
        left outer join regions With (NoLock) on isnull(mo.regions_id, gp.regions_id) = regions.regions_id
left join enrollment en on en.group_profile_id = gp.group_profile_id
        join event_log el on el.event_log_id = en.event_log_id
    left join people client on client.people_id = el.people_id
    left join   race With (NoLock) on el.people_id = race.people_id
    left join group_profile_race gpr with (nolock) on gpr.race_info_id = race.race_info_id
    left join race_info ri with (nolock) on ri.race_info_id = gpr.race_info_id
    left join ethnicity With(NoLock) On client.ethnicity = ethnicity.ethnicity_id
    left join religion on client.religion = religion.religion_id

尝试按 group_profile_id 进行分组并选择每隔一列的 MAX() 。 MAX 将选择每个重复条目的非空值(如果存在,则选择最大值)。 尽管乍一看,更有效的解决方案涉及对数据中的其他 NULL 行进行排序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何消除SQL中的NULL字段 的相关文章

  • 带汇总总计和小计

    我有一个脚本可以生成几乎已经存在的结果集 我正在尝试获取小计和总计 我在年份栏中得到了小计 在最后得到了总计 我的目标是让最终结果显示 总计 而不是小计 请注意 由于汇总函数 我的最后一行 位置 也返回为空 SELECT YEAR COUN
  • 为什么 Map.of 不允许空键和空值?

    在 Java 9 中 引入了新的工厂方法List Set and Map接口 这些方法允许使用一行中的值快速实例化 Map 对象 现在 如果我们考虑 Map
  • 在 OLAP 多维数据集中,过滤属性时总计错误

    用户尝试检查每个销售人员的销售额 样本数据 Salesperson Sales Amount 001 1000 002 500 003 750 Grand Total 2250 看起来不错 但我们有以下层次结构Company gt Clas
  • 如何在sql server中获取从当前日期时间到过去7天的过去7天的数据

    您好 我正在使用 pentaho 将表 A 数据从 sql server 加载到 mysql 加载数据时 我只需要从 sql server A 表获取最近 7 天的数据到 mysql 在sql server中createddate列数据类型
  • SQL查询;水平到垂直

    我遇到了涉及将水平行转换为垂直行的 SQL 查询 SQL Server 以下是我的数据 No Flag 1 Flag 2 Flag 3 A 1 2 3 B 4 1 6 转换后 该表应为 No FlagsName Flag value A F
  • Microsoft SQL Server,在服务器资源管理器中创建新表

    对于 C 编程作业 我必须在 Microsoft SQL Server 中创建一个表 我新安装了 Visual Studio 2013 和 Microsoft SQL Server 2012 当我安装它时 我指定了我的用户进行管理员访问 无
  • 创建表之间的关系

    我的问题特别是关于 sql server 但任何具有任何数据库背景的人都可以回答 如果我希望表 A 与表 B 在某个列上具有 1 1 关系 我是否应该以某种方式修改 CREATE TABLE 语句来标识这种关系 或者这是根本没有完成的事情
  • 为什么表上主键的存在可以显着提高列存储索引的性能?

    我试图了解列存储索引可以在表上提供什么样的性能提升 该表大约有 370 万行 11 列 并存储为堆 即没有主键 我在表上创建列存储索引并运行以下查询 SELECT Area Family AVG Global Sales Value AS
  • 如何使用 ASP.net EF Codefirst 数据注释将 SQL Server 中的列设置为 varchar(max)?

    我一直在网上搜索 试图找出正确的语法 让 Entity Framework Code First 使用一列创建表 varchar max 这就是我所拥有的 默认情况下 这会创建 varchar 128 如何创建 varchar max 我尝
  • 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 测试实例

    我有两台 MS SQL 2005 服务器 一台用于生产 一台用于测试 并且两台服务器的恢复模型均为 完整 我将生产数据库的备份恢复到测试服务器 然后让用户进行更改 我希望能够 回滚对测试 SQL 服务器所做的所有更改 应用自测试服务器最初恢
  • SELECT FOR XML 查询速度慢吗?

    我有一个存储过程 它使用 SELECT FOR XML PATH 语句将 XML 返回给调用者 随着更多的行被添加到查询中的主表中 我注意到该查询的性能已经下降 经过调查 我发现在没有 FOR XML 语句的 SQL Management
  • 在 SQL Server 中实现一对零或一关系

    我正在使用 Entity Framework 4 1 数据库第一种方法 我使用过旧数据库 在我的 edmx 文件中 它根据旧数据库中的表创建实体类 有一个一对零或一某些实体之间的关联 尽管我探索了数据库表以及它们之间的关系 但我不知道如何一
  • SQL Server 与 MySQL:CONTAINS(*,'FORMSOF(THESAURUS,word)')

    我很震惊 当我在 SQL Server 中看到查询非常简单时 我花了 3 4 天弄清楚如何在 mysql 中实现词干提取 和同义词搜索 Select from tab where CONTAINS FORMSOF THESAURUS wor
  • 无法绑定多部分标识符

    我在 SO 上看到过类似的错误 但我找不到解决我的问题的方法 我有一个 SQL 查询 例如 SELECT DISTINCT a maxa b mahuyen a tenxa b tenhuyen ISNULL dkcd tong 0 AS
  • SQL CE Compact 3.5 表的标识列

    是否有一个查询可以针对 INFORMATION SCHEMA 或针对系统表编写 以确定某个列是否是 SQL CE 版本 3 5 中的标识列 Use 列属性 供您参考 a 列属性 Transact SQL http technet micro
  • 主表节点缺失

    我已经安装了 Microsoft SQL Server 2012 Express 当我启动 Management Studio 时 我无法查看系统数据库上的任何 表节点 这是一个错误吗 这是一个错误 如以下链接所述 http connect
  • Python打开Microsoft SQL Server MDF文件

    如何在 Python 中打开 Microsoft SQL Server MDF 文件 Edit 我试过了pyodbc connect但这需要合法的 服务器连接 您不能简单地打开 MDF 文件 pyodbc connect driver SQ
  • 添加ssrs报告描述

    无论如何 我可以添加一个在执行前显示在报告中的 ssrs 报告描述吗 我用谷歌搜索 大多数人说这是不可能的 但必须有一种方法来调整它 对吗 对于仍然需要添加用户可以在执行报告之前阅读的报告描述的任何人 我在我使用的两个 SSRS 版本 20
  • 针对树结构优化 SQL

    如何从数据库中获取具有最佳性能的树形结构数据 例如 假设数据库中有一个文件夹层次结构 文件夹数据库行所在的位置ID Name and ParentID列 您会使用特殊的算法一次获取所有数据 最大限度地减少数据库调用量并在代码中处理它吗 或者
  • 删除sql server中的大量数据

    假设我有一个有 10000000 条记录的表 这两种解决方案有什么区别 删除数据 例如 DELETE FROM MyTable 使用应用程序逐行删除所有数据 DELETE FROM MyTable WHERE ID SelectedID 第

随机推荐

  • 避免按钮内出现屏幕阅读器文本

    我想在 Jaws 读取时忽略按钮内的文本 我的代码是 span style display none Hai span
  • 安装日志文件丢失

    我制作了一个脚本 其中包括 Setup SetupLogging yes 但我找不到日志文件 好像没有被创建 它可能在哪里 可以指定我想放置它的位置吗 您可以通过设置指定日志文件的路径命令行参数 所以要记录例如到C FileName log
  • 将 AndroidAnnotations Maven 设置调整为 Gradle

    是否可以将 AndroidAnnotations Maven 设置调整到 Gradle 中 http code google com p androidannotations wiki MavenEclipse http code goog
  • 对 TransactionScope 的使用进行单元测试

    序言 我设计了一个强接口且完全可模拟的数据层类 期望业务层创建一个TransactionScope http msdn microsoft com en us library system transactions transactions
  • jQuery dataTable 不显示排序图标

    我正在尝试使用 jQuery 数据表插件 问题是排序图标 该箭头指向数据实际排序的方向 未显示 我的代码如下所示 example dataTable bPaginate false bFilter false oLanguage sInfo
  • c# Xamarin Forms:NavigationPage 图标未显示

    我刚刚从默认 app cs 模板创建了一个便携式应用程序 没有更改任何代码 尽管我似乎必须更新 Xamarin Forms 来修复启动异常 并运行它 我得到了这个 没有图标显示 为了彻底起见 这里是代码 再次强调 模板没有任何变化 name
  • 如何在 python 3.x 中将秒转换为 hh:mm:ss

    我只需要使用数学运算符来完成此操作 但我总是在字段中得到高得离谱的数字 def main seconds int input Seconds to be converted days seconds 86400 seconds second
  • 对象中最后一行后的尾随逗号

    我在 VS Code 中使用 Prettier 我注意到 当使用保存格式时 Prettier 每次都会在对象的最后一行添加尾随逗号 例如 假设我有一个像这样的 JS 对象 obj hello hello world world Pretti
  • 当返回到已停止的活动时,旧数据会导致碎片膨胀

    活动 A 有片段 当它开始对活动 B 进行意图时 那么当B finish A执行onCreate again 但这一次 尽管A onCreate 有一个新的PacksPagerAdapter和一个新的ViewPager 片段用旧数据显示 我
  • 502 Kubernetes Ingress 网关错误

    我有一个 kubernetes 设置 其配置如下 kind Service apiVersion v1 metadata name myservice spec selector app my service ports protocol
  • 读取、表示和渲染地图数据的最佳方式是什么?

    我有兴趣编写一个简单的导航应用程序作为我的宠物项目 在搜索了免费地图数据后 我决定了美国人口普查局 TIGER http www census gov geo www tiger tgrshp2007 tgrshp2007 html2007
  • Android 6 (23) - 无需许可

    我坚持使用 Android 6 中的新权限模型 我在清单中定义了以下权限
  • 计算函数合理性的算法/蒙特卡罗方法

    我正在编写一个程序 尝试复制本文开头讨论的算法 http www stat stanford edu cgates PERSI papers MCMCRev pdf http www stat stanford edu cgates PER
  • 我将如何使用括号表示法中的单个变量来访问深度值?

    我想知道如何执行以下操作 我有以下数据 dta fielddata text1 4B030C2E 3D53 4DF8 A3535EF377B45DE5 text2 Unlabeled 我可以使用括号符号访问它 如下所示 var result
  • Google 表格中的正则表达式“NOT”(RE2)

    我想检查单元格中是否有一个单词而不是另一个单词 在这个帖子 https stackoverflow com questions 28775466 google sheet regexreplace match everything exce
  • 删除与某个模式匹配的多个文件

    我使用 Python 和 Django 制作了一个在线画廊 我刚刚开始添加编辑功能 从旋转开始 我使用 sorl thumbnail 按需自动生成缩略图 当我编辑原始文件时 我需要清理所有缩略图 以便生成新的缩略图 每张图片有三到四个 我针
  • Swift async/await 取代了 DispatchQueue.main.async

    在新的 Swift 5 5 中使用 async await 并发机制时如何返回主线程 我应该只用 MainActor 标记函数 类吗 我还能用吗DispatchQueue main async 会是正确的吗 因为新机制不使用 GCD 并且异
  • HABTM 与强参数的关联不会在 Rails 4 中保存用户

    用户模型 has and belongs to many events 事件模型 has and belongs to many users 用户控制器 params require user permit role event ids g
  • geoIP 从 ASP.NET 查找国家/地区

    我可以从 ASP NET 页面检索客户端的 IP 地址 至少是表面上的 IP 地址 我想知道是否有可以从代码隐藏访问的免费服务 当使用 IP 查询时 该服务将返回国家 地区 不需要城市 我无法使用基于 Web http 的服务 您必须手动输
  • 如何消除SQL中的NULL字段

    我正在为 SQL Server 2008 R2 开发 TSQL 查询 我正在尝试开发此查询来识别一条记录 客户 由于其中一些值为 NULL 因此我目前正在对大多数表执行 LEFT JOINS 但 LEFT JOIN 的问题是 现在我为某些客