我陷入困境,希望能在这里得到一些帮助。我有一个查询从两个表和一个读取它的报告中提取信息。我的两个表是这样的:其中一个是联系人列表,其中包含电话号码,姓名和地址。另一张表是付费历史记录。 PhoneNumber字段是它们绑在一起的方式。 Contact表中没有重复的条目,但另一个表中每个电话号码有多个付费实例。
我的报告将他们分组在电话号码上,但我还需要按日期排序。我的日期字段标记为时间/日期,它位于付费表格中。我遇到的问题是我可以在PhoneNumber上分组或在Date字段上排序,但不能同时排序。当我将组设置为顶级时,它会忽略我在其下面设置的排序。如果我进行排序并将其拖动以使其成为顶级,则不会进行分组。当它没有组时,我会留下相同联系信息的多个实例...就像我为它所支付的每个日期获得一个新的列表一样,而我需要一个单独的联系人列表,每个付费实例到被分组在它下面。
这是我的查询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是我的数据库的副本。
答案 0 :(得分: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创建一个组列,然后指定排序。