0

我被困住了,很困惑,希望能在这里得到一些帮助。我有一个从两个表中提取信息的查询和一个读取它的报告。我的两张表是这样的:其中一张是包含电话号码、姓名和地址的联系人列表。另一张表是付费历史。PhoneNumber 字段是它们之间的联系方式。Contact 表中没有重复条目,但另一个表中每个电话号码有多个付费实例。

我的报告将它们按电话号码分组,但我还需要按日期排序。我的日期字段被标记为时间/日期,它在付费表中。我遇到的问题是我可以在电话号码上分组或在日期字段上排序,但不能同时进行。当我将 Group 设置为顶层时,它会忽略我在其下方设置的 Sort。如果我进行排序并将其向上拖动以使其成为顶级,它将不会分组。当它没有分组时,我会留下相同联系信息的多个实例......就像我为它曾经支付的每个日期获得一个新列表一样,而我需要一个包含每个付费实例的单个联系人列表被分组在它下面。

这是我的查询 SQL:

SELECT 
    tblContributorsLead.FirstName, 
    tblContributorsLead.LastName, 
    tblContributorsLead.Address1, 
    tblContributorsLead.ZipCode, 
    tblContributorsLead.CityName, 
    tblPledgesLead.PledgeAmountRecd, 
    tblPledgesLead.DateRecd, 
    tblPledgesLead.PhoneNumber, 
    tblPledgesLead.DispositionTime, 
    tblPledgesLead.Agent, 
    tblPledgesLead.CampaignName, 
    tblPledgesLead.Custom20
FROM 
    tblContributorsLead 
    INNER JOIN 
    tblPledgesLead 
        ON tblContributorsLead.PhoneNumber = tblPledgesLead.PhoneNumber
WHERE 
    (((tblPledgesLead.PledgeAmountRecd)>0) 
        AND ((tblPledgesLead.DateRecd) Is Not Null));

为什么我只能分组或排序,但不能同时进行?

编辑: http: //icloudbackups.com/stripped.zip是我的数据库的副本剥离下来。

4

1 回答 1

0

我想我现在明白你想要什么 - 让最近日期的电话号码组显示在顶部。为此,您需要DateRecd为每个PhoneNumber.

SELECT SortingAndGrouping.LastDate, SortingAndGrouping.PhoneNumber, tblPledgesLead.DateRecd
FROM (tblContributorsLead INNER JOIN tblPledgesLead ON 
  tblContributorsLead.PhoneNumber = tblPledgesLead.PhoneNumber) INNER JOIN 
  (SELECT CDate(Format(tblPledgesLead.DateRecd,"MM/DD/YYYY")) As LastDate, tblPledgesLead.PhoneNumber
    FROM tblContributorsLead INNER JOIN tblPledgesLead ON
      tblContributorsLead.PhoneNumber = tblPledgesLead.PhoneNumber
    ORDER BY tblPledgesLead.DateRecd DESC)  AS SortingAndGrouping ON
  tblContributorsLead.PhoneNumber = SortingAndGrouping.PhoneNumber
ORDER BY SortingAndGrouping.LastDate DESC , SortingAndGrouping.PhoneNumber, tblPledgesLead.DateRecd DESC;

您将需要添加要显示的其他字段(为了清楚起见,我在此处删除了它们),并让报告强制执行与我在这里相同的排序 - 为 LastDate 列创建一个组,然后为 PhoneNumber 列创建一个组,然后指定排序。

于 2013-10-02T17:23:03.183 回答