Спасибо всем, кто помог мне с моим последним вопросом. Это аналогичный вопрос, но теперь у меня есть лучшее представление о том, чего я хочу. Снова я использую 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), дающий дату, когда была взята лаборатория.
То, что я хочу сделать, это:
Edit: если два (или более) строки имеют один и тот же id
, тот же val
и тот же lab_filed_dts
, независимо от их значений в любой другой колонке, я хочу вернуть val
, txt_val
и id
только из одного из строк (неважно, какой из них).
Edit: если две строки имеют одинаковую id
, тот же val
, и в тот же день часть (но не обязательно время) lab_filed_dts
И времени часть lab_filed_dts
для одного из них полночь, я хочу вернуться val
, txt_val
и id
из ряда, чье время lab_filed_dts
не является полночь.
Еще раз спасибо за помощь всем!
Когда у вас есть две (или более) строки, как вы определяете, какой txt_val выбрать? – lins314159
Есть ли первичный ключ в этой таблице? –
Том: есть первичный ключ, 'lab_id'. Lins: либо я не понимаю ваш вопрос, либо я не понимаю, как работает SELECT. Я хотел сказать следующее: если две (или более) строки имеют одинаковые «id», те же «val» и те же «lab_filed_dts», независимо от их значений в любом другом столбце, я хочу вернуть ' val', 'txt_val' и' id' только из одной из строк (неважно, какой из них). Помогает ли это вообще? – raoulcousins