![](/img/trans.png)
[英]Select a distinct row based on the max value of another column SQL Server 2008 R2
[英]SQL server 2008 R2, select one value of a column for each distinct value of another column
在SQL Server 2008 R2上,我想為另一列的每個不同值選擇一列的一個值。
例如
name id_num
Tom 53
Tom 60
Tom 27
Jane 16
Jane 16
Bill 97
Bill 83
我需要為每個不同的名稱獲取一個id_num,例如
name id_num
Tom 27
Jane 16
Bill 97
對於每個名稱,只要它與名稱相關聯,就可以隨機選擇id_num(不需要為max或min)。
例如,對於比爾,我可以選擇97或83。任何一種都可以。
我確實知道如何編寫SQL查詢。
謝謝
SELECT
name,MIN(id_num)
FROM YourTable
GROUP BY name
更新:如果您想隨機選擇id_num,可以嘗試一下
WITH cte AS (
SELECT
name, id_num,rn = ROW_NUMBER() OVER (PARTITION BY name ORDER BY newid())
FROM YourTable
)
SELECT *
FROM cte
WHERE rn = 1
您可以像這樣獲取最大id:
SELECT name, MAX(id_num)
FROM tablename
GROUP BY name
這樣就可以為每個不同的名稱獲得一個ID。
從名稱中從[mytable]組中選擇名稱max(id_num)
cte中的(SELECT 1)並沒有真正對每個分區中的數據進行排序。 這應該給您隨機選擇。
CREATE TABLE #tmp
(
name VARCHAR(10)
, id_num INT
)
INSERT INTO #tmp
SELECT 'Tom', 53 UNION ALL
SELECT 'Tom', 60 UNION ALL
SELECT 'Tom', 27 UNION ALL
SELECT 'Jane', 16 UNION ALL
SELECT 'Jane', 16 UNION ALL
SELECT 'Bill', 97 UNION ALL
SELECT 'Bill', 83
;WITH CTE AS (
SELECT
ROW_NUMBER() OVER (PARTITION BY name ORDER BY (SELECT 1)) AS ID
, name
, id_num
FROM #tmp
)
SELECT *
FROM CTE
WHERE ID = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.