访问中的复杂排序

时间:2014-03-24 10:46:48

标签: sql ms-access

我正在尝试使用MS访问从数据库中提取课程资金信息。资金将附加到数据库中的每个学生。许多学生参加了不止一门课程。由于资金附加到学生,这导致它显示在几个课程,所以总计太高。资金需要仅针对学生所在的主要课程进行展示。

我有一个hirachy的课程代码(开头数字告诉你它是什么类型的代码)。例如,我需要能够指定当学生参加“N *”代码课程和“M *”课程时,资金应该通过M课程来实现。课程代码有7种不同的组合。

目前我有两个问题。第一个退出:学生证,资金,课程代码。第二个然后计算学生ID,并按课程代码对资金进行分组。

我应该如何以及在何处实施阻止资金重复所需的SQL?

由于

查询一(全民教育基金资助基础查询):

SELECT 
      [Learner ID], 
      [Learner Funding], 
      [Course Code]
   FROM 
      Learner 
         INNER JOIN LearningDelivery LD
            ON Learner.Learner_Id = LD.Learner_Id
            INNER JOIN ProviderSpecDeliveryMonitoring AS PSDM 
               ON LD.LearningDelivery_Id = PSDM.LearningDelivery_Id 
   Where
          [Course Code] Not Like "C*" 
      And [Course Code] Not Like "F*";

查询二:

SELECT 
      CStr([Course_Code]) AS C_Code, 
      Count([EFA Funding Base Query].LrnDV_OnProgPayment_Efa) AS CountOfLrnDV_OnProgPayment_Efa, 
      Sum([EFA Funding Base Query].LrnDV_OnProgPayment_Efa) AS SumOfLrnDV_OnProgPayment_Efa
   FROM 
      [EFA Funding Base Query]
   GROUP BY 
      CStr([Course_Code]);

我现在得到的是:

学生X,Y和Z附加了5000英镑的资金。

X& Y是过程M1,N2和N3,Z仅在N2

此刻,我的第一个查询(下方)将返回:

X 5000 M1
X 5000 N2
X 5000 N3
Y 5000 M1
Y 5000 N2
Y 5000 N3
Z 5000 N2

然后,我的第二个查询将返回学生人数和资金总额,这样就可以了:

M1, 2, 10000
N2, 3, 15000
N3, 2, 10000

然而,学校只有15000个资金。在课程的hirachy中,M更高。因此,如果学生在M课程上,他们的资金应该出现在它旁边。如果他们只参加N课程,那么资金应该是针对那个课程的。我应该回归的是:

M1, 2, 10000
N2, 3, 5000
N3, 2, 0

请注意,实际上有4种不同的课程代码,学生可以使用各种不同的课程组合,对于资助应该显示的课程有不同的规则。基本上,实施这些规则的最佳方式是什么?

由于

0 个答案:

没有答案