2015-04-20 69 views
3

我的4gl程序需要:
比方說,我有一個包含電話號碼和姓名的表格。可以有兩個人使用相同的電話號碼,或者兩個人使用一個電話號碼。
我只需要在表格中選擇每個電話號碼的1。
我所做的:在4GL中選擇2個不同的列

SELECT DISTINCT phone_number, last_name FROM table 

結果將顯示2條記錄。即使電話號碼是相同的,因爲名稱不同,它不再是唯一的。我怎樣才能得到一個獨特的電話號碼,無論其姓氏? (不過,我想最後的名字,以及我不在乎是哪一個。)

回答

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的情況,所以我不記得它是否會在這方面努力上下文。

3

如果你不關心哪個姓氏,然後嘗試了這一點:

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

不會downvote,但這個問題被標記爲informix所以我懷疑TSQL將工作。 –

+0

哈哈我以爲我把t-sql的搜索。我的錯。 – Stephan

+1

它發生了,我也做到了。 MSSQL是我選擇的數據庫 –