SQL选择每个组中的所有记录(名称,DOB)

时间:2015-07-18 01:43:46

标签: mysql sql

我的表格包含ID DOB AMOUNT RECEIVER_NAME SENDER_NAME SETTLE_FEE列。

样本数据

ID  DOB         AMOUNT  RECEIVER_NAME   SENDER_NAME     SETTLE_FEE
-------------------------------------------------------------------
1   10-06-1990  100       Jose      Benn        12
2   12-06-1990  200       Jim       Mike        12
3   10-06-1990  300       Kate      Benn        12
4   12-06-1990  100       Amy       Mike        12
5   10-06-1990  200       Alison    Benn        12
6   12-06-1990  300       Mary      Mike        12

预期结果

ID  DOB         SENDER_NAME
---------------------------
1   10-06-1990  Benn    
        |--------AMOUNT  RECEIVER_NAME  SETTLE_FEE
                  100      Jose            12
                  300      Kate            12
                  200      Alison          12
2   12-06-1990  Mike    
        |--------AMOUNT  RECEIVER_NAME  SETTLE_FEE
                  200      Jim             12
                  100      Amy             12
                  300      Mary            12

我需要获取每个发件人姓名的所有数据。

我尝试使用group_concat(),但是,它只需要1024个字符。

那么,实现这种情况的有效方法是什么。

我无法使用PL / SQL,也不允许与会话相关的值。

我需要所有发件人名称的所有收件人姓名,金额和费用。有效的方法是什么。

谢谢, 何

1 个答案:

答案 0 :(得分:0)

有一个解决方案:

只需使用ORDER BY:

SELECT ID, DOB,SENDER, AMOUNT,  RECEIVER_NAME,  SETTLE_FEE
FROM inputTable
ORDER BY SENDER,DOB;

在显示您想要的数据时,您只需使用类似(虚拟代码,javscriptish)的代码:

var previousSender="";
while(var row=db.fetch()) {
  if(row.sender!=previousSender) {
    console.log(id+" "+row.dob+" "+row.sender);
    previousSend=row.sender();
  } else {
    console.log("        |-------"+row.amount+" "+row.receiver_name+" "+row.settle_fee);
  }
}

如您所见:id是随机的,因为它与模型中的dob或sender不相关。它只是一个行计数器。