[英]Convert from T-SQL to Access query?
是否有方便的方法將此T-SQL查詢轉換為MS Access? ROUND
和COALESCE
在Access中似乎不起作用。 我試圖讓自定義AVG
字段在Access中運行,但始終會收到語法錯誤(缺少運算符) 。
SELECT TOP 50 [EmployeeID]
,[Last Name]
,[First Name]
,[HrsThisWk]
--AVG HRs
,ROUND(
coalesce((
coalesce([1WksAgo],0) +
coalesce([2WksAgo],0) +
coalesce([3WksAgo],0) +
coalesce([4WksAgo],0) +
coalesce([5WksAgo],0)
)/
nullif(
case when coalesce([1WksAgo],0)=0 then 0 else 1 end +
case when coalesce([2WksAgo],0)=0 then 0 else 1 end +
case when coalesce([3WksAgo],0)=0 then 0 else 1 end +
case when coalesce([4WksAgo],0)=0 then 0 else 1 end +
case when coalesce([5WksAgo],0)=0 then 0 else 1 end,
0),0), 2)
AS '--- AVG HRs ---'
,[1WksAgo]
,[2WksAgo]
,[3WksAgo]
,[4WksAgo]
,[5WksAgo]
FROM [CMHR].[dbo].[tbl52weekHours_20150527]
GROUP BY
[EmployeeID]
,[Last Name]
,[First Name]
,[HrsThisWk]
,[1WksAgo]
,[2WksAgo]
,[3WksAgo]
,[4WksAgo]
,[5WksAgo]
使用NZ
代替COALESCE
和NULLIF
,並使用IIF
代替CASE WHEN
和"..."
代替[...]
如下所示:
SELECT TOP(50) "EmployeeID"
,"Last Name"
,"First Name"
,"HrsThisWk"
,ROUND(
NZ((
NZ("1WksAgo",0) +
NZ("2WksAgo",0) +
NZ("3WksAgo",0) +
NZ("4WksAgo",0) +
NZ("5WksAgo",0)
)/
NZ(
IIF(NZ("1WksAgo",0)=0, 0, 1) +
IIF(NZ("2WksAgo",0)=0, 0, 1) +
IIF(NZ("3WksAgo",0)=0, 0, 1) +
IIF(NZ("4WksAgo",0)=0, 0, 1) +
IIF(NZ("5WksAgo",0)=0, 0, 1),
0),0), 2)
AS "AVG HRs"
,"1WksAgo"
,"2WksAgo"
,"3WksAgo"
,"4WksAgo"
,"5WksAgo"
FROM "tbl52weekHours_20150527"
GROUP BY
"EmployeeID"
,"Last Name"
,"First Name"
,"HrsThisWk"
,"1WksAgo"
,"2WksAgo"
,"3WksAgo"
,"4WksAgo"
,"5WksAgo"
您可以創建沒有TOP(50)
查詢,然后將Top Values屬性設置為50
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.