按日期排序,但将类似字段分组

时间:2012-09-18 18:11:21

标签: sql asp-classic grouping

我是Stack Overflow和ASP的新手,但是这个网站已经多次保释了我!我对ASP和VBS非常熟悉,但对PHP更熟悉,所以如果我的问题有PHP解决方案,那也没关系。

一点背景 - 我的访问数据库有两个表(与此查询相关),一个称为SignUpLog,另一个称为NotesSignUpLog.FirstNoteAddr字段对应于另一个表中的Notes.NoteKey字段。

我成功地显示了数据库中的所有条目,但我想要做的是将特定患者的所有条目一起分组,同时仍然按日期排序(最新的在顶部)。 / p>

这是我的代码:

Set DataConn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
DataConn.Open "DBQ=" & Server.Mappath("/path/to/mydb") & ";Driver={Microsoft Access Driver (*.mdb)};Uid=user;Pwd=pass;"

Set rsDsp = DataConn.Execute("SELECT SignUpLog.PatientFileNumber, SignUpLog.ArrivalDateTime, Notes.Note, SignUpLog.Called, SignUpLog.DrName FROM SignUpLog, Notes WHERE (((Notes.NoteKey)=[SignUpLog].[FirstNoteAddr])) ORDER BY SignUpLog.ArrivalDateTime DESC;")

If rsDsp.EOF Then
    Response.Write "Sorry, no entries in the database!"
Else
%>
<div align="center"><center>
    <table BORDER="0" width="700">
        <tr>
            <th width="105">Name</th>
            <th width="105">Arrival Time</th>
            <th width="105">Doctor</th>
            <th width="105">Notes</th>
        </tr>
 <%
   While Not rsDsp.EOF
     x = x + 1
     If x = 1 Then
       Response.Write "<TR><TD>" & rsDsp.Fields.Item("PatientFileNumber").Value & "</TD>"
       Response.Write "<TD>" & rsDsp("ArrivalDateTime").Value & "</TD>"
        Response.Write "<TD>" & rsDsp("DrName").Value & "</TD>"
        Response.Write "<TD>" & rsDsp("Note").Value & "</TD></TR>"
     Else 
       Response.Write "<TR><TD BGCOLOR=E4E4E4>" & rsDsp.Fields.Item("PatientFileNumber").Value & "</TD>"
       Response.Write "<TD BGCOLOR=E4E4E4>" & rsDsp("ArrivalDateTime").Value & "</TD>"
       Response.Write "<TD BGCOLOR=E4E4E4>" & rsDsp("DrName").Value & "</TD>"
       Response.Write "<TD BGCOLOR=E4E4E4>" & rsDsp("Note").Value & "</TD></TR>"
       x = 0
     End If

     rsDsp.MoveNext
   Wend
   Response.Write "</TABLE>"  


   DataConn.Close

   End If
  %>
 </table>
 </center></div>

这给了我类似的输出:

Patient A | 9/18/2012 12:56:21 PM | Appt | Note1
Patient A | 9/18/2012 12:56:21 PM | Appt | Note2
Patient A | 9/18/2012 12:56:21 PM | Appt | Note3
Patient B | 9/18/2012 1:56:21 PM | WalkIn | Note1
Patient B | 9/18/2012 1:56:21 PM | WalkIn | Note2

我想要的是:

Patient A | 9/18/2012 12:56:21 PM | Appt | Note1, Note2, Note3
Patient B | 9/18/2012 1:56:21 PM | WalkIn | Note1, Note2

我已经尝试过使用Group By并继续使用聚合函数,这让人感到困惑,因为我不想做任何数学上的事情。就像说我是一个完整的ASP菜鸟,我绝不是程序员。

2 个答案:

答案 0 :(得分:0)

我相信在这里已经有了解决你的问题的办法,试着看THIS问题。您只需定义(有点复杂)函数并将其用作示例。

答案 1 :(得分:0)

这实际上是一个与ASP几乎没有关系的SQL查询问题。由于您使用的是MDB,因此您可能会发现使用MS Access对查询进行建模更容易,然后将生成的SQL语句粘贴回ASP代码中。

以下问题可以提供帮助:

SQL Group with Order by