【问题标题】:Pulling distinct values for individuals为个人提取不同的价值观
【发布时间】:2014-02-05 19:29:48
【问题描述】:

我正在尝试从 proc_chron 的最近日期读取所有具有 4 个轴类别中任何一个结果的患者,并且患者在其 case_status 下处于(活跃)状态,不包括所有四个类别的患者为空。 SQL 服务器 2005。

select 

pct.patient_id,
pct.clinic_id,
pct.axis_I_II_1,
pct.axis_I_II_2,
pct.axis_I_II_3,
pct.axis_III_1,
pct.proc_chron

from patient_clin_tran pct
join patient p
on p.patient_id = pct.patient_id
group by pct.patient_id, pct.clinic_id, pct.axis_I_II_1,pct.axis_I_II_2, pct.axis_I_II_3, pct.axis_III_1, p.case_status, pct.proc_chron
having p.case_status = 'a' and pct.proc_chron = (select max(pct.proc_chron))
order by pct.patient_id

【问题讨论】:

  • pct.proc_chron = (select max(pct.proc_chron) 移动到 WHERE 并尝试。
  • 不确定我是否理解您在说什么。我添加了一个 where 除了拥有和尝试与 group by 并已注释掉它仍然无法正常工作。
  • StevieG 已经发布了我要求您执行的操作,看看是否可行。
  • 他发布的内容有误。我在他的下面发布了错误。

标签: sql sql-server-2005 group-by distinct


【解决方案1】:
select     
    pct.patient_id,
    pct.clinic_id,
    pct.axis_I_II_1,
    pct.axis_I_II_2,
    pct.axis_I_II_3,
    pct.axis_III_1,
    pct.proc_chron    
from patient_clin_tran pct
    join patient p
    on p.patient_id = pct.patient_id
where p.case_status = 'a' 
    and pct.proc_chron = (select max(proc_chron) from patient_clin_tran pct2 where pct2.patientid = p.patientid)
and (pct.axis_I_II_1 is not null or pct.axis_I_II_2 is not null or pct.axis_I_II_3 is not null or pct.axis_I_II_4 is not null)
order by pct.patient_id

【讨论】:

  • Msg 156, Level 15, State 1, Line 15 关键字“where”附近的语法不正确。
  • 这行得通。谢谢!关于如何删除所有 4 个轴列都为空的任何想法?
  • @StevieG 如果没有使用 AGGREGATE 函数,那么分组的意义何在。我认为这可以在没有 GROUPing 的情况下完成。
  • 可以通过分组来完成。他只是在修改我的代码,在我发布我目前拥有的那个之前,我已经把它放在了一百万种不同的形式中。如果有人有任何想法,不确定所有 4 轴列是否为 NULL。非常感谢您的帮助。
  • 稍微编辑了答案 - 删除了 GROUP BY 并过滤掉了 4 个空值的行..
猜你喜欢
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 2012-08-22
  • 2017-06-04
  • 1970-01-01
相关资源
最近更新 更多