假设我在后台使用Oracle Server,从多个表(不是表)的复杂查询集得到如下结果:
当我有像type in ('A','B')
这样的where条件时出现。我在源表中也有其他类型,但现在我只使用这两种类型。
<表类>
ID
代码类型 tbody><<tr>1 123 2214 B 3 336 1245 B 2214 4123 B 表类>
您可以使用ROW_NUMBER()功能来实现此结果,例如
WITH YOUR_TABLE_DATA (ID,CODE,TYPE)
AS
(
SELECT 1, 123,'A' FROM DUAL UNION ALL
SELECT 2 , 214, 'B' FROM DUAL UNION ALL
SELECT 3 , 336 , 'A' FROM DUAL UNION ALL
SELECT 1 , 245 ,'B' FROM DUAL UNION ALL
SELECT 2 , 214 , 'A' FROM DUAL UNION ALL
SELECT 4, 123 , 'B' FROM DUAL
)
SELECT X.ID,X.CODE,X.TYPE FROM
(
SELECT Y.ID,Y.CODE,Y.TYPE,
ROW_NUMBER()OVER(PARTITION BY Y.ID ORDER BY Y.TYPE ASC)XCOL
FROM YOUR_TABLE_DATA Y
)X WHERE X.XCOL=1
https://dbfiddle.uk/aBbWTqZP