我在T-SQL中有一個工作查詢,但需要在MS Access中進行轉換(並使用它)。我得到一個錯誤,當我嘗試運行此:轉換MS Access中使用的SQL Server查詢
SELECT
tblKPIData.id, tblKPIData.KPI_id,
tblKPI.KPI_Name,
tblKPIData.ImportTimestamp, tblKPIData.Quantity,
tblKPIData.FinancialMonth, tblKPIData.FinancialYear,
tblKPIData.Zone_id, tblZone.ZoneName,
tblKPIData.DMA_id, tblDMA.DMA_Name,
tblKPIData.TargetOrResult
FROM
((((tblKPIData
INNER JOIN
tblKPI ON tblKPI.Id = tblKPIData.KPI_id)
LEFT JOIN
tblDMA ON tblDMA.Id = tblKPIData.DMA_id)
LEFT JOIN
tblZone ON tblZone.ID = tblKPIData.Zone_id)
INNER JOIN
tblDashboardKPI ON tblDashboardKPI.KPI_Id = tblKPIData.KPI_id)
INNER JOIN
(SELECT
a.kpi_id, a.financialMonth, a.financialYear,
ISNULL(a.zone_id, 0) AS zone_id,
ISNULL(a.dma_id, 0) AS dma_id,
a.targetorresult,
MAX(a.importtimestamp) AS importtimestamp
FROM
tblKPIData a
GROUP BY
kpi_id, financialMonth, financialYear,
zone_id, dma_id, targetorresult) AS max_kpi ON (tblKPIData.KPI_id = max_kpi.KPI_id
AND tblKPIData.ImportTimestamp = max_kpi.importtimestamp
AND tblKPIData.FinancialMonth = max_kpi.FinancialMonth
AND tblKPIData.FinancialYear = max_kpi.FinancialYear
AND ISNULL(tblKPIData.Zone_id, 0) = ISNULL(max_kpi.zone_id, 0)
AND ISNULL(tblKPIData.DMA_id, 0) = ISNULL(max_kpi.dma_id, 0)
AND tblKPIData.TargetOrResult = max_kpi.TargetOrResult)
WHERE
tblKPIData.FinancialMonth = 'Oct'
AND tblKPIData.FinancialYear = 2017
AND tblKPIData.KPI_id IN (SELECT kpi_id FROM tblDashboardKPI WHERE tblDashboardKPI.KPI_Id = tblKPIData.KPI_id)
AND (tblKPIData.Zone_id = 5 OR tblKPIData.DMA_id IN (SELECT id FROM tblDMA WHERE Zoneid = 5))
AND ((tblDashboardKPI.Status) = True)
AND ((tblDashboardKPI.Dashboard_Id) = 6)
我得到這個錯誤:
Wrong number of arguments used with function in query expression 'tblKPIData.KPI_Id = max_kpi.KPI_id and tblKPIData.ImportTimestamp = max_kpi.importtimestamp and tblKPIData.FinancialMonth = max_kpi.FinancialMonth and ... etc
誰能告訴我什麼是錯?我真的不知道..
我覺得MS Access使用'NZ()'而不是'ISNULL()'。 –
請參閱https://support.office.com/en-us/article/Queries-93fb69b7-cfc1-4f3e-ab56-b0a01523bb50#ID0EAABAAA=SQL_syntax –