我在 Oracle 18c 資料庫中有這個表:
CREATE TABLE TABLEA
(
COLUMNA NUMBER(5) NOT NULL,
COLUMNB NUMBER(5) NOT NULL
)
我有這些行:
Insert into TABLEA
(COLUMNA, COLUMNB)
Values
(96, 1011);
Insert into TABLEA
(COLUMNA, COLUMNB)
Values
(96, 9130);
Insert into TABLEA
(COLUMNA, COLUMNB)
Values
(848, 1011);
Insert into TABLEA
(COLUMNA, COLUMNB)
Values
(848, 1172);
Insert into TABLEA
(COLUMNA, COLUMNB)
Values
(1095, 1011);
Insert into TABLEA
(COLUMNA, COLUMNB)
Values
(1095, 1172);
它應該很簡單,但我真的卡在這里了。我需要把所有的不同的值COLUMNA,當所有COLUMNB從同COLUMNA在(1172,1011,1037)。
預期結果:
COLUMNA
----------
848
1095
不應回傳值 96,因為有一行的值COLUMNB不在條件中。
如果有幫助,這些值(1172、1011、1037)可以位于具有單列的特定表中。
我試過這個,但我只想要不同的值:
SELECT columnA, COUNT (*) OVER (PARTITION BY columnA)
FROM tableA
WHERE EXISTS
(SELECT 1
FROM tableB -- With (1172, 1011, 1037) in each row
WHERE COLUMNB = values)
GROUP BY COLUMNA
HAVING COUNT (*) > 1;
還有其他解決方案嗎?
uj5u.com熱心網友回復:
也許您應該使用 DISTINCT 來顯示非重復值。
你有沒有嘗試過這樣的事情?
SELECT DISTINCT columnA FROM tableA WHERE columnB in (1172, 1011, 1037)
uj5u.com熱心網友回復:
也許是這樣,不是 100% 遲到了 :)
select
columna
from
#tablea
group by columna
having count(*)=sum(case when columnb in (1172, 1011, 1037) then 1 else 0 end)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/357318.html
上一篇:以特定方式對列值進行排序
