从相同的 table 生成比较

Generating comparison from same table

我正在尝试创建一个显示

的查询

这是为了生成历史比较。

目前我有 2 个相同的表来完成此操作,但我正在尝试通过查询生成它。

目前我有2个相同的查询如下:

SELECT CU_Info.CU_Name, Membership.Period, 
  Membership.[Membership_#],CU_Info.Province
FROM CU_Info
INNER JOIN Membership
ON CU_Info.CU_Name = Membership.CU_Name
WHERE (((Membership.Period)=[Forms]![Members_By_Province]![cboPeriodProvince])
AND ((CU_Info.Province)=[Forms]![Members_By_Province]![cboProvince]));

然后另一个组合和比较 2 个查询:

SELECT qryNowProv.CU_Name, qryNowProv.[Membership_#],
  qryCompProv.CU_Name, qryCompProv.[Membership_#], qryCompProv.Province
FROM qryNowProv, qryCompProv;

结果如下:

Bank1, 1000, Bank1, 9000, QE
Bank1, 1000, Bank2, 9500, QE

现在列中有重复信息,比较列中有循环数据。我希望它比较相同银行的会员数量,但在不同的时间段(用于增长比较)。

您可以使用 sum by case 语句来更快地执行此操作。

SELECT CU_Info.CU_Name, [Forms] ! [Members_By_Province] ! [cboPeriodProvince] AS Period, SUM(CASE 
            WHEN (Membership.Period) = [Forms] ! [Members_By_Province] ! [cboPeriodProvince]
                THEN Membership.[Membership_#]
            ELSE 0
            END) PeriodMembership, SUM(CASE 
            WHEN (Membership.Period) = [Forms] ! [Members_By_Province] ! [cboPeriodProvince]
                THEN 0
            ELSE Membership.[Membership_#]
            END) OutsidePeriodMembership, CU_Info.Province
FROM CU_Info
INNER JOIN Membership ON CU_Info.CU_Name = Membership.CU_Name
WHERE (
        ((Membership.Period) =)
        AND ((CU_Info.Province) = [Forms] ! [Members_By_Province] ! [cboProvince])
        );

GROUP BY CU_Info.CU_Name, CU_Info.Province

我可能会从一些简单的子查询开始执行此操作,一个到 return 每个日期的成员计数:

SELECT first_period.CU_Name, first_membership, second_membership
second_membership - firt_membership AS membership_difference
FROM
(
  SELECT CU_Name, [Membership_#] AS first_membership
  FROM Membership
  WHERE Period = 1
) first_period
INNER JOIN
(
  SELECT CU_Name, [Membership_#] AS first_membership
  FROM Membership
  WHERE Period = 2
) second_period
ON first_period.CU_Name = second_period.CU_Name

显然,您需要根据自己的具体要求(特别是 WHERE Period = whatever)对此进行调整,但这应该能让您入门。