+ -
当前位置:首页 → 问答吧 → 想实现如附件中要求的查询如何做到?

想实现如附件中要求的查询如何做到?

时间:2011-05-10

来源:互联网

利用表一及表二中的信息,表一与表二中的合同号有关系,为一对多的关系,现想做一个如表三内容的查询。
要求:1、查询中的“合同号”只显示表一中“合同类型”为“国外设备”的合同号;
      2、查询中其他合同基本信息均从表一中对应;
      3、查询中“付款日期”为表二中对应合同号的最近的付款日期,即最大的日期;
      4、查询中“付款金额”为表二中对应合同号的付款金额之和;
      5、查询中“到货日期”为最近到货的日期,即为最大的日期;
      6、查询中的“最迟装运日期”为表二中对应合同号的最大付款日期对应的最迟装运日期;
      7、查询中的“货物名称”及“备注”为表二中的同一合同号的对应内容的合并。
请问第6及第7条要求如何实现?(1-5已实现)

附件

合同执行情况查询.rar(17.29 KB)

2011-5-10 15:46, 下载次数: 4

作者: yuna_5689   发布时间: 2011-05-10

6、
SELECT a.合同号, a.付款日期, a.最迟装运日期
FROM 表2:付款及到货情况 A where a.付款日期=(select max(付款日期) from 表2:付款及到货情况 where 合同号=a.合同号)

7、Access多行合并成一行的实现


Public Function concateColumn(sTable As String, sRow As String, sCol As String, vRow As String, Optional delimiter As String = "")
    Dim dbsNorthwind As DAO.Database
    Dim rs As DAO.Recordset
    Dim sSQL As String
    Dim sResult As String
    Dim i As Integer
    sResult = ""
    sSQL = "select " & sCol & " from " & sTable & " where " & sRow & "=""" & vRow & """"
   
    Set dbsNorthwind = CurrentDb
    Set rs = dbsNorthwind.OpenRecordset(sSQL, dbOpenDynaset)

    For i = 0 To rs.RecordCount - 1
        If i = rs.RecordCount - 1 Then
            sResult = sResult & rs.Fields(0).Value
        Else
            sResult = sResult & rs.Fields(0).Value & delimiter
        End If
        rs.MoveNext
    Next i
    rs.Close
    Set rs = Nothing
    Set dbsNorthwind = Nothing
   
    concateColumn = sResult
   
End Function

调用:
SELECT 查询5.规格, concateColumn('查询5','规格','名称',规格,"/") AS 合并的名称
FROM 查询5;

作者: marco   发布时间: 2011-05-10