在4GL中选择2个不同的列

时间:2015-04-20 14:34:32

标签: sql informix 4gl

我的4gl程序需要:
假设我有一个包含电话号码和姓名的表格。可以有2个人使用相同的电话号码,或2个姓名和1个电话号码。
我需要在表格中选择每个电话号码中的一个。
我做了:

SELECT DISTINCT phone_number, last_name FROM table 

结果将显示2条记录。即使电话号码是相同的,因为名称不同,它不再是唯一的。无论 last_name 如何,我如何获得唯一的电话号码? (但我也希望得到姓氏。我不关心哪一个)

2 个答案:

答案 0 :(得分:5)

正如您所注意到的,

DISTINCT将返回完全不同的行。

听起来你正在寻找像group by这样的东西。基本上,GROUP BY phone_number将为每个电话号码返回一行。因为您还想获得last_name,所以您需要指示数据库如何返回它。你说你不关心哪个,所以你可以简单地写一下:

SELECT phone_number, MAX(last_name) as last_name
FROM table
GROUP BY phone_number

Informix也支持FIRST_VALUE聚合函数,虽然我只在OLAP情况下使用它,所以我不记得它是否可以在这种情况下工作。

答案 1 :(得分:3)

如果你不在乎姓氏,那就试试吧:

SELECT phone_number,
       MAX(last_name) AS last_name
FROM table
GROUP BY phone_number