假设我有一个查询,其输出是给定的表:
Number Data Info
123 data1 info1
456 data2 info2
789 data3 info3
123 data4 info4
我想要与列相同的表, 但没有记录他们的号码列被获取(不是那里最好的措辞,抱歉)。 所以它就像一个独特的。
对我而言,哪个记录与我在结果中保留的数字无关紧要。
所以我要找的输出是:
Number Data Info
123 data1 info1
456 data2 info2
789 data3 info3
我正在使用oracle sql。
提前致谢!
答案 0 :(得分:2)
您可以将聚合函数从MAX更改为其他函数,以获取数据和信息的不同值
SELECT Number, Max(Data) AS Data, Max(Info) as Info
FROM Table
GROUP BY Number
FIRST()可能对你有意义。这是关于聚合函数的oracle文档: https://docs.oracle.com/database/121/SQLRF/functions003.htm#SQLRF20035
答案 1 :(得分:2)
GROUPING
会向您提取MAX()
或MIN()
..但如果您想要整行,则必须使用以下分析方法。这会为每个NUMBER生成一个序列。当有2个相同值的NUMBER时,它会生成seq,1.2。
所以,总是选择1,你得到的是你。必须明确提供要选择的行的优先级。
SELECT NUMBER,DATA,INFO
FROM
(
SELECT NUMBER,DATA,INFO,ROW_NUMBER() OVER(PARTITION BY NUMBER ORDER BY <ordering column>) identifier
FROM YOUR_TABLE
)
WHERE identifier = 1