哈o
我有一张 table (看下面),它有4条记录。请注意,ColumnA和ColumnB具有相同的值,而ColumnC和columnD将具有不同的值。

ColumnA ColumnB ColumnC ColumnD
------- ------- ------- -------
xx      yy      AAA     333
xx      yy      BBB     555
xx      yy      AAA     333
xx      yy      BBB     555

我试图使用Group By查询选择整个记录,如下所示:
SELECT ColumnC from TableA GROUP BY ColumnC;

该查询仅向我显示ColumnC,但我的期望是不仅选择ColumnC,还要选择整个记录。

更新:我的预期输出是:
ColumnA ColumnB ColumnC ColumnD
------- ------- ------- -------
xx      yy      AAA     333
xx      yy      BBB     555

我可以知道该怎么做吗?

谢谢 @!

最佳答案

在Oracle中:

SELECT  *
FROM    (
        SELECT  t.*,
                ROW_NUMBER() OVER (PARTITION BY columnC ORDER BY columnA) AS rn
        FROM    mytable
        )
WHERE   rn = 1

更改ORDER BY子句以控制将返回包含重复项的记录(现在返回columnA的值最小的记录)。

10-04 09:53