我有一张包含员工的表。由于我所工作的公司规模很大(大约3千名员工),因此其中一些公司名称相同是很自然的。现在可以通过用户名区分它们,但由于网页需要与所有这些用户一起下拉,我需要在其名称中添加一些额外的数据。
我知道我可以先抓住所有用户,然后通过foreach运行它们并为每个用户对象添加计数。但这将是非常无效的。因此,我需要一个好的SQL查询,这将做类似的事情。子查询可以成为我需要的东西吗?
我的表看起来像这样:
name ----- surname ----- username
John Mayer jmaye
Suzan Harvey sharv
John Mayer jmay3
现在我觉得这很棒,如果查询返回相同的3个字段,如果有多个人具有相同的姓名和姓氏组合,也会返回布尔值。
答案 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;