Sql server 基于列的MAX()筛选联合结果
我有两个查询,它们的结果集通过一个并集组合在一起 我正在尝试根据第th filter列的Sql server 基于列的MAX()筛选联合结果,sql-server,Sql Server,我有两个查询,它们的结果集通过一个并集组合在一起 我正在尝试根据第th filter列的MAX()筛选出行,但我不知道如何执行此操作 +-----------------+----------+--------------+ | PropDescription | PropCode | FilterColumn | +-----------------+----------+--------------+ | 476SADDR1 | Finland | 2 |
MAX()
筛选出行,但我不知道如何执行此操作
+-----------------+----------+--------------+
| PropDescription | PropCode | FilterColumn |
+-----------------+----------+--------------+
| 476SADDR1 | Finland | 2 |
| 477SADDR1 | Sweden | 2 |
| 1SADDR1 | 2038 | 1 |
| 2SADDR1 | 2030 | 1 |
| 3SADDR1 | 15 | 1 |
| 4SADDR1 | 00000002 | 1 |
| 6SADDR1 | 500 | 1 |
| 8SADDR1 | 556 | 1 |
| 9SADDR1 | 821 | 1 |
+-----------------+----------+--------------+
SELECT
PropDescription
, PropCode
, FilterColumn
FROM
(SELECT DISTINCT
CASE
WHEN PL.Type = 11
THEN PL.ADDR
ELSE P.ADDR
END AS N'PropDescription'
,CASE
WHEN PL.TYPE = 3
THEN P.CODE
ELSE LPA.Value
END AS N'PropCode'
, 2 AS FilterColumn
FROM PROPERTY PL
INNER JOIN PROPLIST LP2 ON PL.ID = LP2.PropList
INNER JOIN PROPERTY P ON LP2.Property = P.ID
INNER JOIN PropAttribute LPA ON LPA.PropList = PL.ID
WHERE 1 = 1
AND PL.ID IN (SELECT Property from PROPLIST where PropList IN (47,46))
AND P.TYPE = 3
UNION ALL
SELECT DISTINCT
CASE
WHEN PL.Type = 11
THEN PL.ADDR
ELSE P.ADDR
END AS N'PropDescription'
,CASE
WHEN PL.TYPE = 3
THEN P.CODE
ELSE LPA.Value
END AS N'PropCode'
, 1 AS FilterColumn
FROM PROPERTY PL
INNER JOIN PROPLIST LP2 ON PL.ID = LP2.PropList
INNER JOIN PROPERTY P ON LP2.Property = P.ID
LEFT JOIN PropAttribute LPA ON LPA.PropList = PL.ID
WHERE 1 = 1
AND PL.ID IN (SELECT Property from PROPLIST where PropList IN (1,2,3,4))
AND PL.TYPE = 3
) AS ResultSet
我知道这很简单,但我现在无法理解
预期产出为:
+-----------------+----------+--------------+
| PropDescription | PropCode | FilterColumn |
+-----------------+----------+--------------+
| 476SADDR1 | Finland | 2 |
| 477SADDR1 | Sweden | 2 |
+-----------------+----------+--------------+
试试这个:
;with cte as
( --Your union),
filtered as
(*, rank() over (order by filtercolumn desc) rank from cte)
select * from filtered
where rank = 1
那么,根据您提供的样本数据,您的预期输出是什么样的呢?嗯,从我所读到的内容来看,我缺少关于您希望过滤器如何在FilterColumn上工作的附加条件。。。。到目前为止,我已经理解了通过PropDescription从(您的子查询)组中选择PropDescription、PropCode、FilterColumn,PropCode的FilterColumn=MAX(FilterColumn)@shree.pat18使用预期输出更新了我的问题。@DimiToulakis使用预期输出更新了我的问题。是的,排名。。就这样!我知道我以前用过一些东西,但不记得是什么了。@RaduGheorghiu不用担心,我们都时不时地被这些东西难倒!