Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为个人带来不同的价值观_Sql_Sql Server 2005_Group By_Distinct - Fatal编程技术网

Sql 为个人带来不同的价值观

Sql 为个人带来不同的价值观,sql,sql-server-2005,group-by,distinct,Sql,Sql Server 2005,Group By,Distinct,我正在尝试读取所有患者的数据,这些患者在其最近的proc_chron日期的4个轴类别中的任何一个,并且患者在其病例状态下是a(活动)患者,不包括所有四个类别均为空的患者。SQLServer2005 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 j

我正在尝试读取所有患者的数据,这些患者在其最近的proc_chron日期的4个轴类别中的任何一个,并且患者在其病例状态下是a(活动)患者,不包括所有四个类别均为空的患者。SQLServer2005

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

Move
pct.proc\u chron=(选择最大值(pct.proc\u chron)
到WHERE并重试。我不确定我是否理解你所说的。我在have之外添加了一个WHERE,并与小组成员一起尝试,并已发表评论,但仍然不起作用。StevieG已经发布了我要求你做的事情,看看是否有效。我在他发布的内容上有一个错误。我在他的下面发布了错误。Msg 156,Level 15,State 1,第15行关键字“where”附近的语法不正确。这很有效。谢谢!关于如何删除所有4个轴列都为空的轴列的语法有什么想法吗?@StevieG如果没有使用聚合函数,分组有什么意义。我想这可以在没有分组的情况下完成。这可以通过分组来完成。他只是在修改我的代码,我有个p在我发布我目前拥有的表格之前,我用了一百万种不同的形式发布它。如果有人有任何想法的话,我不确定所有4轴列都是空的。非常感谢你的帮助。编辑answeer-稍微删除GROUP BY并过滤掉带有4个空的行。。
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