[英]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.