代码之家  ›  专栏  ›  技术社区  ›  Keegan Husom

SQL在应该提取值时提取null

  •  0
  • Keegan Husom  · 技术社区  · 5 年前

    我以前就有这个功能,我一辈子都搞不清楚它发生了什么,因为它不会显示Q4和Q5列的真实值。

    此查询正在提取调查数据,所有行的Q4和Q5都为空。第一季度至第三季度的数据显示正确。

    这是我的疑问:

    DECLARE @start as datetime2(0) = '2021-01-01'
    
    SELECT
        MAX(IIF(metric.name = 'Q1' AND survey.sr_actual_value BETWEEN 1 AND 5, survey.sr_actual_value, NULL)) AS Q1,
        MAX(IIF(metric.name = 'Q2' AND survey.sr_actual_value BETWEEN 1 AND 5, survey.sr_actual_value, NULL)) AS Q2,
        MAX(IIF(metric.name = 'Q3' AND survey.sr_actual_value BETWEEN 1 AND 5, survey.sr_actual_value, NULL)) AS Q3,
        MAX(IIF(metric.name = 'Q4' AND survey.sr_actual_value BETWEEN 1 AND 5, survey.sr_actual_value, NULL)) AS Q4,
        MAX(IIF(metric.name = 'Q5' AND survey.sr_actual_value BETWEEN 1 AND 5, survey.sr_actual_value, NULL)) AS Q5,
        MAX(IIF(metric.name = 'Q6', survey.sr_string_value, NULL)) AS Comment,
        MAX(survey.si_taken_on) as Taken,
        MAX(ims.number) as [Number],
        MAX(ims.sys_id) as sys_id,
        MAX(tech.name) AS Tech,
        MAX(man.first_name) AS Manager,
        MAX(cust.name) AS Customer,
        CASE
        WHEN MAX(awi.queue) = 'b63d965cdbb05454586593a6f4961968' THEN 'SS'
        WHEN MAX(awi.queue) = '67e1f6cbdb9298548fd6695e1396199c' THEN 'Chat'
        ELSE NULL
        END as [Group]
    
    FROM [v2_sn].[u_interaction_survey_reporting] as survey
    
    LEFT JOIN v2_sn.sys_user as cust on cust.sys_id = survey.si_user
    LEFT JOIN v2_sn.asmt_metric as metric on metric.sys_id = survey.sr_metric
    LEFT JOIN v2_sn.interaction as ims on ims.sys_id = survey.inter_sys_id
    LEFT JOIN v2_sn.sys_user as tech on tech.sys_id = ims.assigned_to
    LEFT JOIN v2_sn.sys_user as man on man.sys_id = tech.manager
    left join v2_sn.awa_work_item as awi on awi.document_id = ims.sys_id
    
    WHERE survey.si_taken_on >= @start
        and metric.name in ('Q1','Q2','Q3','Q4''Q5','Q6')
        and survey.si_metric_type = '1c4f20afdbc614103779a6dc139619c9'
        and awi.queue in ('b63d965cdbb05454586593a6f4961968', '67e1f6cbdb9298548fd6695e1396199c')
    
    GROUP BY survey.si_sys_id
    

    就像我说的,它以前是有效的。我试着改变日期,看看这是不是2021个问题,这无济于事。我确认数据库包含Q4和Q5数据,并且不应为空。有人知道这里发生了什么吗?任何帮助都将不胜感激。如果您需要更多信息或有疑问,请不要犹豫。

    0 回复  |  直到 5 年前
        1
  •  1
  •   HardCode    5 年前

    你的句子中少了一个逗号 and metric.name in ('Q1','Q2','Q3','Q4''Q5','Q6') .没有度量名称等于文本字符串 Q4''Q5