簡體   English   中英

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

SQL小提琴演示

您可以像這樣獲取最大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.

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