簡體   English   中英

將T-SQL查詢轉換/翻譯為MS Access查詢

[英]Convert / translate t-sql query to MS Access query

我有一個要在MS Access中使用的SQL查詢,但無法正確執行。 任何幫助將不勝感激。

select tblKPIData.Id
     , tblKPIData.KPI_id
     , tblKPIData.Quantity
     , tblKPIData.FinancialMonth
     , tblKPIData.FinancialYear
     , tblKPIData.ImportTimestamp 
     , tblDashboadKPI.Dashboard_Id
from (
    select tblKPIData.kpi_id,
           max(tblKPIData.ImportTimestamp) as ImportTimestamp
    from tblKPIData
    group by tblKPIData.KPI_id
)
as b
inner join tblKPIData
on tblKPIData.KPI_id = b.KPI_id 
and tblKPIData.ImportTimestamp = b.ImportTimestamp
right join tblDashboadKPI
on tblDashboadKPI.KPI_Id = tblKPIData.KPI_id
where FinancialMonth = 'nov'
and FinancialYear = 2016
and tblDashboadKPI.Dashboard_Id = 5
order by tblKPIData.Id
        ,tblKPIData.KPI_id

如果您的查詢當前有效,我建議:

select kp.Id, kp.KPI_id, kp.Quantity, kp.FinancialMonth,
       kp.FinancialYear, kp.ImportTimestamp,
       d.Dashboard_Id
from ((select tblKPIData.kpi_id,
              max(tblKPIData.ImportTimestamp) as ImportTimestamp
       from tblKPIData
       group by tblKPIData.KPI_id
      ) as b inner join
      tblKPIData as kp
      on kp.KPI_id = b.KPI_id and kp.ImportTimestamp = b.ImportTimestamp
     ) right join
     tblDashboadKPI as d
     on d.KPI_Id = kp.KPI_id
where FinancialMonth = "nov" and FinancialYear = 2016 and
      d.Dashboard_Id = 5
order by kp.Id, kp.KPI_id;

變化:

  • JOIN需要附加括號
  • 字符串使用雙引號
  • 我還介紹了表別名,以簡化查詢

我想我有解決方案:

SELECT tblKPIData.Id
     , tblKPIData.KPI_id
     , tblKPIData.Quantity
     , tblKPIData.FinancialMonth
     , tblKPIData.FinancialYear
     , tblKPIData.ImportTimestamp
     , tblKPIData.Type
     , tblDashboadKPI.Dashboard_Id
FROM tblDashboadKPI
INNER JOIN tblKPIData 
ON tblDashboadKPI.KPI_Id = tblKPIData.KPI_id
WHERE (((tblKPIData.FinancialMonth)="nov") 
         AND ((tblKPIData.FinancialYear)=2016) 
         AND ((tblKPIData.ImportTimestamp)=(select max(d2.ImportTimestamp) 
                                            from tblKPIData as d2
                                            where d2.KPI_Id = tblKPIData.KPI_Id)) 
         AND ((tblDashboadKPI.Dashboard_Id)=5));

感謝您的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM