簡體   English   中英

如何查詢具有第v.2列之一相同值的行中具有最高列值的行

[英]How to query for rows that have highest column value among rows that have same value for one of the columns v.2

仍然是SQL的熟練手。 我有一個名為#everything的臨時表,該表具有以下數據。 (標題縮寫)。 臨時表中的列比這多得多。

hh_key sub_id tier
   1    1234   T1
   2    2345   T2
   3    4567   T4
   3    4568   T3

我想返回具有“最佳”層的行。 就我而言,最好的數字在“ T”之后最低。 所以這是我想要的結果:

hh_key sub_id tier
   1    1234   T1
   2    2345   T2
   3    4568   T3

我知道這個確切的問題已在此處提出並解決: 上一個問題,但答案中提供的語法對我不起作用。 返回所有記錄,而不僅僅是具有所需值的記錄。

這將是我上一個答案的版本,並且不會返回值的子集。 一切都返回了。

Select household_key, sm_subscription_id ,mytier
from #everything
where Mytier is not null
and Mytier IN (select MIN(mytier) from #everything group by household_key)
order by household_key

原因是我表中所請求的列多於那三列嗎?

您可以使用ROW_NUMER()

SUBSTRING(tier, 2, LEN(tier) - 1)將提取'T'之后的數字。 您可以使用提取的字符串並將其CASTINT ,然后在ROW_NUMBERORDER BY子句中使用它。

SQL小提琴

WITH Cte AS(
    SELECT *,
        rn = ROW_NUMBER() OVER(
            PARTITION BY hh_key
            ORDER BY CAST(SUBSTRING(tier, 2, LEN(tier) - 1) AS INT)
        )
    FROM #everything
)
SELECT
    hh_key, sub_id, tier
FROM Cte
WHERE rn = 1
DROP TABLE #everything

暫無
暫無

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

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