是否可以允许不同但仅适用于 2 个值?

Is it possible to allow distinct but for 2 values only?

我有一个我无法解决的问题,或者想不出任何可以帮助我的问题。 下面的示例输出。 在 Column4 中有 3 种类型的值 3 个 Random number1 和 3 个 Random number2 ...等。 我的目标是在 column4 中仅显示该值的 2 种类型。在这个例子中带有“*”标记的行。 这样我就得到了 6 行数据。 但是 column4 的值是完全随机的。 也许我得到 10000 行,其中只有 700 行是唯一的,其余的是第 4 列中那 700 行的重复。 我可能过于简化了这个选择,但这对我来说很容易理解整个事情。

I have this:
UN_ID_DATE             UN_ID      OBJ             Task                                Random_ID     
-------------------    -------    --------------  -------------------------------     -------  
2021-02-24 10:33:24    157        Elol            Einschlcsse                         9999999    
2021-02-24 10:24:59    191        Biva            Polierstelle                        4444444  
2021-02-24 10:23:38    185        oldal           Karobau Schleifstelle               4444444  
2021-02-24 10:23:26    173        Tuf             Delle                               2222222  
2021-02-24 10:20:06    173        Tuf             Delle                               3333333  
2021-02-24 10:18:22    191        Biva            Polierstelle                        9999999  
2021-02-24 10:16:29    185        oldal           Kratzer                             9999999 


Goal:
UN_ID_DATE             UN_ID      OBJ             Task                                Random_ID     
-------------------    -------    --------------  -------------------------------     -------  
2021-02-24 10:33:24    157        Elol            Einschlcsse                         9999999  
2021-02-24 10:18:22    191        Biva            Polierstelle                        9999999  
2021-02-24 10:16:29    185        oldal           Kratzer                             9999999
2021-02-24 10:24:59    191        Biva            Polierstelle                        4444444  
2021-02-24 10:23:38    185        oldal           Karobau Schleifstelle               4444444  

在所需的数据集中,所有 Random_ID 与前两个相似但不同。所以 999999 和 4444444 是不同的,所以我需要所有带有 Random_ID 9999999 和 4444444 的行,这是 5 行。这是按 DATE 订购的,此日期属于 UN_ID。

提前谢谢你们! :)

有一个方便的 OLAP 函数 DENSE_RANK 您可以使用它。
试试这个,取消注释行:

WITH MYTAB (RANDOM_ID) AS
(
VALUES
  9999999
, 4444444
, 4444444
, 2222222
, 3333333
, 9999999
, 9999999 
)
SELECT *
FROM
(
SELECT T.*, DENSE_RANK() OVER (ORDER BY RANDOM_ID DESC) RN_ 
FROM MYTAB T
)
--WHERE RN_ <= 2
;

结果是:

|RANDOM_ID|RN_|
|---------|---|
|9999999  |1  |
|9999999  |1  |
|9999999  |1  |
|4444444  |2  |
|4444444  |2  |
|3333333  |3  |
|2222222  |4  |