感谢大家谁帮助我的最后一个问题。这是一个类似的问题,但现在我对自己想要的东西有了更好的了解。我再次使用MS SQL Server 2008,并试图找出超出我一周的SQL体验的查询。SQL Server 2008:基于多列过滤出重复行
现在我有以下简单的查询
SELECT pl.val, pl.txt_val, pl.id
FROM dm.labs pl
WHERE pl.lab_nm = 'CK (CPK)'
AND pl.val < 999999;
AND pl.val IS NOT NULL
ORDER BY pl.val;
在这个表中,每一行对应于患者的实验室值的结果。问题在于,对于一些患者来说,有些行实际上是同一实验室阅读的多个副本。有一列pl.lab_filed_dts
(日期时间数据类型)给出了实验室的日期。
我想要做的是:
编辑:如果两个(或更多)行具有相同的id
,同样val
,和相同的lab_filed_dts
,无论其值的任何其他列,我希望仅从其中一行返回val
,txt_val
和id
(这与哪一个无关)。
编辑:如果两行具有相同的id
,同样val
,并在同一天部分(但不一定是时间)lab_filed_dts
和lab_filed_dts
他们的一个时间部分是午夜,我要回val
,txt_val
和id
,其中lab_filed_dts
时间不是午夜。
再次感谢大家的帮助!
当你有两个(或更多)行时,你如何确定选择哪个txt_val? – lins314159 2009-12-20 23:37:37
此表上有主键吗? – 2009-12-21 05:12:56
Tom:有一个主键'lab_id'。 Lins:要么我不明白你的问题,要么我不明白SELECT是如何工作的。 我想说的是:如果两个(或更多)行具有相同的'id',相同的'val'和相同的'lab_filed_dts',而不管其他列中的值如何,我想返回' val','txt_val'和'id'只有一行(不重要)。这有帮助吗? – raoulcousins 2009-12-21 15:01:49