从Oracle表中获取值

时间:2011-08-30 06:30:55

标签: sql oracle

我有一张包含员工的表。由于我所工作的公司规模很大(大约3千名员工),因此其中一些公司名称相同是很自然的。现在可以通过用户名区分它们,但由于网页需要与所有这些用户一起下拉,我需要在其名称中添加一些额外的数据。

我知道我可以先抓住所有用户,然后通过foreach运行它们并为每个用户对象添加计数。但这将是非常无效的。因此,我需要一个好的SQL查询,这将做类似的事情。子查询可以成为我需要的东西吗?

我的表看起来像这样:

name ----- surname ----- username

John       Mayer         jmaye

Suzan      Harvey        sharv

John       Mayer         jmay3

现在我觉得这很棒,如果查询返回相同的3个字段,如果有多个人具有相同的姓名和姓氏组合,也会返回布尔值。

2 个答案:

答案 0 :(得分:5)

将标志添加到Daniel的答案......

SELECT NAME, SURNAME, USERNAME, DECODE(COUNT(*) OVER (PARTITION BY NAME, SURNAME), 1, 'N', 'Y')
FROM
YOUR_TABLE;

请注意,Oracle SQL不支持布尔值(叹息......)

答案 1 :(得分:3)

这可以通过计数分区轻松完成:

SELECT NAME, SURNAME, USERNAME, COUNT(*) OVER (PARTITION BY NAME, SURNAME)
FROM
YOUR_TABLE;