У меня есть запрос, который извлекает информацию из других таблиц, созданных в запросе. Мой окончательный вывод из окончательного выбора из заявления выглядит следующим образом:Выберите отдельную строку на основе максимального значения другого столбца SQL Server 2008 R2
VISIT_ID | MRN | DAYS SCORE | IP SCORE | ER SCORE | CC SCORE | TOTAL
123456 | 123 | 3 | 3 | 2 | 0 | 8
123456 | 123 | 3 | 3 | 2 | 2 | 10
123456 | 123 | 3 | 3 | 2 | 4 | 12
...
То, что я хотел бы сделать, это просто получить строку с MAX (TOTAL), в этом случае строку с TOTAL = 12
Я посмотрел на это post, но, похоже, все не так. Я также посмотрел here.
Вот запрос, который производит результаты:
-- @LACE_MSTR TABLE DECLARATION ###################################//
DECLARE @LACE_MSTR TABLE(
MRN VARCHAR(200)
, VISIT_ID VARCHAR(200)
, [LACE DAYS SCORE] INT
, [LACE ACUTE IP SCORE] INT
, [LACE ER SCORE] INT
, [LACE COMORBID SCORE] INT
)
--###################################################################//
INSERT INTO @LACE_MSTR
SELECT
Q1.MRN
, Q1.ENCOUNTER_ID
, Q1.[LACE DAYS SCORE]
, Q1.[ACUTE ADMIT SCORE]
, CASE
WHEN Q1.VISIT_COUNT IS NULL THEN 0
WHEN Q1.VISIT_COUNT = 1 THEN 1
WHEN Q1.VISIT_COUNT = 2 THEN 2
WHEN Q1.VISIT_COUNT = 3 THEN 3
WHEN Q1.VISIT_COUNT >= 4 THEN 4
ELSE 0
END AS [LACE ER SCORE]
, Q1.[CC LACE SCORE]
FROM
(
SELECT
DISTINCT T1.ENCOUNTER_ID
, T1.MRN
, T1.[LACE DAYS SCORE]
, T1.[ACUTE ADMIT SCORE]
, CNT.VISIT_COUNT
, CM.[CC LACE SCORE]
FROM @T1 T1
LEFT OUTER JOIN @CNT CNT
ON T1.MRN = CNT.MRN
JOIN @CM CM
ON CM.[MRN CM] = T1.[MRN]
) Q1
SELECT DISTINCT VISIT_ID
, MRN
, [LACE DAYS SCORE]
, [LACE ACUTE IP SCORE]
, [LACE ER SCORE]
, [LACE COMORBID SCORE]
, [LACE DAYS SCORE]+[LACE ACUTE IP SCORE]+[LACE ER SCORE]+[LACE COMORBID SCORE] AS [TOTAL LACE]
FROM @LACE_MSTR
Tried this but I did not do it right therefore it does not work
--INNER JOIN
-- (
-- SELECT VISIT_ID
-- , MAX([LACE DAYS SCORE]+[LACE ACUTE IP SCORE]+[LACE ER SCORE]+[LACE COMORBID SCORE]) AS [TOTAL LACE]
-- FROM @LACE_MSTR
-- GROUP BY VISIT_ID
-- ) GROUPEDLACE_MSTR ON @LACE_MSTR.VISIT_ID=GROUPEDLACE_MSTR.VISIT_ID
-- AND @LACE_MSTR.[TOTAL LACE SCORE] = [email protected]_MSTR.[TOTAL LACE]
GROUP BY VISIT_ID
, MRN
, [LACE DAYS SCORE]
, [LACE ACUTE IP SCORE]
, [LACE ER SCORE]
, [LACE COMORBID SCORE]
Пожалуйста, дайте мне знать, если есть необходимость в разъяснении.
Спасибо,
Какова фактическая группировка по (например, что диктует дубликат), 'VISIT_ID + MRN'? –
Дубликат исходит из отдельного запроса. Он очень длинный, но из этого запроса я также сначала группируюсь на 'VISIT_ID' –