【问题标题】:SELECT Distinct with condition of other column valueSELECT 与其他列值的条件不同
【发布时间】:2014-05-20 17:19:51
【问题描述】:

如果你想试试的话,我已经在 SQL Fiddle 建立了架构。

我有以下数据

AutoID         Apartment      Flag       Description
======         =========      ====       ===========
1              1              NO         Device 1
2              1              NO         Device 2
3              1              NO         Device 3
4              2              NO         Device 4
5              2              NO         Device 5
6              3              NO         Device 6
7              3              NO         Device 7
8              3              YES        Device 8
9              3              NO         Device 9 

我正在尝试使用以下规则获取数据

  1. 仅选择不同的 Apartment 值
  2. 如果标志为 YES,则选择该项目作为唯一值

所以如果我运行 SQL 语句,我最终会得到 ​​p>

AutoID         Apartment      Flag       Description
======         =========      ====       ===========
1              1              NO         Device 1
4              2              NO         Device 4
8              3              YES        Device 8

我一直在尝试使用 OVER() 和 PARTITION BY,但运气不佳。非常感谢任何帮助或指导。

【问题讨论】:

  • 如果FLAGNO
  • 然后我只显示一个值,例如在 2 号公寓中,两个标志都是 NO,我只显示带有 autoid 4 的那个。

标签: sql sql-server tsql


【解决方案1】:
;WITH CTE AS
(
    SELECT  *,
            RN = ROW_NUMBER() OVER(PARTITION BY Apartment
                                   ORDER BY CASE WHEN [Flag] = 'YES' THEN 1 ELSE 2 END,
                                            [AutoID])
    FROM TableA
)
SELECT *
FROM CTE
WHERE RN = 1

Here is修改后的sqlfiddle

【讨论】:

  • 好的,太棒了,谢谢。我仍然需要等待 10 分钟才能接受这个答案......我应该问而不是在过去 1 小时内拔掉头发。
  • @Fylix 别担心,很高兴它有所帮助。另外,还没有必要急于接受答案
【解决方案2】:

第一步 - 为每个组分配相同的公寓号的订单号

第二步 - 只选择第一步

select AutoID, Apartment, Flag, Description from (
select AutoID, Apartment, Flag, Description, row_number() over (partition by apartment order by Flag desc) rnum 
from table1)
where rnum = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2018-05-26
    相关资源
    最近更新 更多