You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL按NOTRID返回指定结果的SQL查询优化需求

SQL Azure 查询优化方案

需求明确

  • 针对每个NOTRID返回对应记录,规则如下:
    • 若该NOTRID的QualitativeResult字段全为空字符串,仅返回该NOTRID的1条记录
    • 若该NOTRID的QualitativeResult字段存在空值与非空值混合,仅返回非空值的记录
  • 所有NOTRID至少包含1条空值记录

优化后的查询语句

通过窗口函数先统计每个NOTRID下非空QualitativeResult的数量,再基于统计结果筛选记录:

WITH NotrStats AS (
    SELECT 
        NOTRID,
        COUNT(CASE WHEN QualitativeResult <> '' THEN 1 END) OVER (PARTITION BY NOTRID) AS NonEmptyCount
    FROM -- 替换为你实际的表/视图关联逻辑,比如 Results JOIN NotrResult JOIN vNOTR
        YourTableOrJoinLogic
)
SELECT DISTINCT
    t.NOTRID,
    t.QualitativeResult
    -- 添加你需要返回的其他字段
FROM 
    YourTableOrJoinLogic t
JOIN NotrStats s ON t.NOTRID = s.NOTRID
WHERE 
    (s.NonEmptyCount > 0 AND t.QualitativeResult <> '')
    OR (s.NonEmptyCount = 0 AND t.QualitativeResult = '')
ORDER BY t.NOTRID;

逻辑说明

  1. 统计阶段:用COUNT(CASE...) OVER(PARTITION BY NOTRID)计算每个NOTRID下非空QualitativeResult的总数,以此判断该NOTRID属于哪种情况
  2. 筛选阶段:
    • 当NonEmptyCount>0时,说明存在有效非空记录,只保留QualitativeResult<>''的行
    • 当NonEmptyCount=0时,说明全为空字符串,通过DISTINCT确保每个NOTRID仅返回1条空值记录
  3. 替换YourTableOrJoinLogic为你现有查询中的表连接逻辑即可直接使用

内容的提问来源于stack exchange,提问作者Sam Baker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:07:08