使用子查询来访问ACCESS

时间:2018-12-10 22:56:38

标签: sql ms-access subquery pivot-table

需要一些帮助... 我设法使使用MS-ACCES运行的查询集成了子查询。

SELECT
    TS3.YearTimeSheet, 
    Ress1.[Complete Name], 
    Rates2.[Applicable Currency], 
    Rates2.[Applicable Rate], 
    TS3.WeekTimeSheet, 
    Sum(TS3.TotalWeek) AS [Total Hrs], 
    Sum([TotalWeek]*[Applicable Rate]*(1+[WAO])) AS [Cost Incl WAO]
FROM 
    (
        [Resources Rates] AS Rates2
        INNER JOIN Resources AS Ress1 ON Rates2.StaffID = Ress1.STAFFID
    ) 
    INNER JOIN TimeSheets AS TS3 ON Ress1.STAFFID = TS3.STAFFID
WHERE Rates2.[Applicable Rate] = (
    SELECT [Resources Rates].[Applicable Rate] 
    FROM [Resources Rates] 
    WHERE  
        [Resources Rates].[StaffID]= [Rates2].[StaffID]
        AND DatePart('yyyy', [Resources Rates].[Starting Date]) = [TS3].[YearTimeSheet] 
        AND NOT DatePart('ww', [Resources Rates].[Starting Date])>=[TS3].WeekTimeSheet 
        AND NOT DatePart('ww', [Resources Rates].[Ending Date])< [TS3].WeekTimeSheet
    )
GROUP BY
    TS3.YearTimeSheet, 
    Ress1.[Complete Name], 
    Rates2.[Applicable Currency], 
    Rates2.[Applicable Rate], 
    TS3.WeekTimeSheet;

很遗憾,尝试将其转换为Pivot…错误! “不支持Microsoft Access的Microsoft Access,可以在“ TS3.WeekTimeSheet”中更正表达式的正确性。在英语中,Access无法识别TS3.WeekTimeSheet为字段。

我的理解是,该变量的声明位于指令的末尾,因此不能在以前使用?它可以在TRANSFORM PIVOT指令中的普通子查询中工作。方法肯定错误...请帮助 但是,当我用静态数据强制标准时,下面的SQL指令仍然有效。在下面的结构中,我肯定做错了。 我以为下面应该做的工作。知道我在做什么错吗?

TRANSFORM Sum(TS3.TotalWeek) AS WeekSum

SELECT TS3.YearTimeSheet,
  Ress1.[Complete Name], 
  RatesBis.[Applicable Currency], 
  RatesBis.[Applicable Rate], 
  Sum(TS3.TotalWeek) AS [Total Hrs], 
  Sum([TotalWeek]*RatesBis.[Applicable Rate]*(1+[WAO])) AS [Cost Incl WAO]

FROM Resources AS Ress1 INNER JOIN TimeSheets AS TS3 ON Ress1.STAFFID = TS3.STAFFID, 
  (
  SELECT [Resources Rates].[Applicable Currency], [Resources Rates].[Applicable Rate] 
  FROM [Resources Rates] 
  WHERE [Resources Rates].[StaffID]=Ress1.STAFFID
   AND NOT DatePart('ww', [Resources Rates].[Starting Date])>= TS3.WeekTimeSheet
   AND NOT DatePart('ww', [Resources Rates].[Ending Date])< TS3.WeekTimeSheet
   ) AS RatesBis

GROUP BY 
  TS3.YearTimeSheet, 
  Ress1.[Complete Name], 
  RatesBis.[Applicable Currency], 
  RatesBis.[Applicable Rate]

PIVOT TS3.WeekTimeSheet;

0 个答案:

没有答案