簡體   English   中英

根據另一列的最大值選擇一個不同的行SQL Server 2008 R2

[英]Select a distinct row based on the max value of another column SQL Server 2008 R2

我有一個查詢,該查詢從查詢​​中創建的其他表中提取信息。 我的最終select語句的最終輸出如下所示:

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

我看過這篇文章,但似乎無法正確處理。 我也看過這里。

這是產生結果的查詢:

-- @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] = GROUPED@LACE_MSTR.[TOTAL LACE]

GROUP BY VISIT_ID
, MRN
, [LACE DAYS SCORE]
, [LACE ACUTE IP SCORE]
, [LACE ER SCORE]
, [LACE COMORBID SCORE]

請讓我知道是否需要澄清。

謝謝,

假定分組應基於VISIT_IDMRN

;WITH x AS 
(
  SELECT VISIT_ID, MRN, ... etc ..., 
    rn = ROW_NUMBER() OVER (PARTITION BY VISIT_ID, MRN 
      ORDER BY [LACE DAYS SCORE] + [LACE ACUTE IP SCORE]
        + [LACE ER SCORE] + [LACE COMORBID SCORE] DESC)
  FROM @LACE_MSTR
)
SELECT VISIT_ID, MRN, ... etc ... 
FROM x WHERE rn = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM