oracle group通过一次获取一个组

时间:2015-08-10 08:38:56

标签: oracle perl

我的数据看起来像这样

 1. Fname    Lastname   DOB       ADDR   SEX   SSN 
 2. Sanal    Pillai    12/11/85   Pune   M     - 
 3. Sunil    Pillai    05/11/80   Pune   M     123456 
 4. Anju     Pillai    12/11/85   Pune   F     345679 
 5. Arachana Pillai    05/11/80   Pune   M  

-

现在我在DOB上做一组我会相应地安排数据

select fname,lastname,dob,addr,sex,ssn from data group by dob(..rest of the columns..) having count(dob) > 1

但我想知道的是,是否有可能一次获得一个小组,即

 1. Sanal    Pillai    12/11/85   Pune   M     -
 2. Anju     Pillai    12/11/85   Pune   F     345679

然后剩下的两行

3 个答案:

答案 0 :(得分:2)

您好我认为您可能不知道group by子句的确切功能。下面我已经发布了几行供您理解。

  

Oracle GROUP BY子句用于收集SELECT语句   跨多个记录的数据,并将结果分组一个或多个   列。

<强>语法:

SELECT col1, col2, ... coln, 
       aggregate_function (column_name)
FROM tables
WHERE conditions
GROUP BY col1, col2, ... coln;

column_names你在select子句中提到的内容,你应该在group by keyword之后提到。 按照上面的语法和您的问题所需的输出查询是:

select fname,lastname,dob,addr,sex,sum(ssn) as ssn from data group by fname,lastname,dob,addr,sex  having count(dob) > 1

更多http://www.dba-oracle.com/t_oracle_group_by_having.htm

答案 1 :(得分:1)

这是不可能的。 Sql用于从有时具有特定顺序的数据库中获取数据。在用于显示数据的工具中完成对接收数据的进一步分析。这可以是一种编程语言或其他可以使用sql接收数据的工具。

答案 2 :(得分:1)

您可以使用RANKDENSE_RANK分析函数来分配分组ID和顺序:

ul {
    display:table;
}

li {
    list-style-type:none;
    margin-bottom:1em;
    clear:both;
    display:table-row;
}

li > h3 {
    display:table-cell;
    margin:0;
    padding:0;
    white-space:nowrap !important;
}

li > h3 > span {
    background-color:lightgray;
    width:100%;
    display:block;
    padding-right:0.5em;
}

li > p {

    display:table-cell;
    margin:0;
    padding:0;
    margin-bottom:1em;
    background-color:lightgray;
}