마지막 질문에 도움을 주신 모든 분들께 감사드립니다. 이것은 비슷한 질문이지만, 이제는 내가 원하는 것을 더 잘 알 수 있습니다. 다시 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
(datetime 데이터 형식)이 있습니다.
내가하고 싶은 것입니다 :
편집 : 두 개 이상의 행이 다른 컬럼에 관계없이 동일한 값 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
이 테이블에 기본 키가 있습니까? –
Tom : 기본 키 'lab_id'가 있습니다. Lins : 귀하의 질문을 이해할 수 없거나 SELECT 작동 방식을 이해할 수 없습니다. 내가 말하고자했던 것은 : 두 개 (또는 그 이상)의 행이 다른 열의 값과 상관없이 동일한'id', 동일한'val' 및 동일한'lab_filed_dts'를 갖는다면' val','txt_val', 그리고'id'만으로 행 중 하나 (그것은 어느 것이 든 상관 없습니다)에서. 이 모든 도움이됩니까? – raoulcousins