我有这样的 table
AMID条目
------- ---------
1000火星
1001 JUPITER
1002土星
1003金星
1003土星
1004海王星
1004土星
1005 JUPITER
1005火星
现在,我要提取具有特定ENTRY值的DISTINCT AMID值。
茶几应该是这样的
AMID条目
-------- --------
1000火星
1001 JUPITER
1002土星
1003金星
1004土星
1005火星
选择ENTRY值的条件是,
它必须根据此优先级获取值:
因此,如果任何一个AMID同时具有维纳斯和火星,则应该采用维纳斯
火星和土星,应该带火星
NEPTUNE和JUPITER,应采用JUPITER。(按优先级选择)。
最佳答案
您可以使用排名功能(如果您使用的是SQL Server 2008)来做到这一点:
DECLARE @t TABLE (AMID INT, Entry VARCHAR(100))
INSERT @t
VALUES
( 1000 ,'MARS'),
( 1001 ,'JUPITER'),
( 1002 ,'SATURN'),
( 1003 ,'VENUS'),
( 1003 ,'SATURN'),
( 1004 ,'NEPTUNE'),
( 1004 ,'SATURN'),
( 1005 ,'JUPITER'),
( 1005 ,'MARS')
;WITH a AS(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY AMID ORDER BY
CASE Entry
WHEN 'VENUS' THEN 0
WHEN 'MARS' THEN 1
WHEN 'JUPITER' THEN 2
WHEN 'SATURN' THEN 3
WHEN 'NEPTUNE' THEN 4
END) num
FROM @t
)
SELECT AMID, Entry
FROM a
WHERE num = 1
关于sql - 根据优先级从列中选择值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11880325/