我正在将MS Access查询转换为SQL Server存储过程。我达到了这一点:
SELECT
AuthNum, AuthStatus, DateCreated,
MIN(DateInitiated) AS DateInitiated,
EventClassification,
FIRST(PlaceOfService) AS PlaceOfService,
Lob, MemId,
MAX(NoticeDate) AS NoticeDate,
MAX(Tat) AS Tat,
FIRST(StaffId) AS StaffId
FROM
PA_TAT_Detailed
GROUP BY
AuthNum, AuthStatus, DateCreated, EventClassification, Lob, MemId
HAVING
((FIRST(PlaceOfService) <> 'Inpatient Hospital')
AND (FIRST(PlaceOfService) <> 'Office - Dental')
AND (FIRST(PlaceOfService) <> 'Dialysis Center'))
AND
((MAX(Tat) Is Null) OR ((MAX(Tat) >= 0) AND (MAX(Tat) <= 28)))
ORDER BY
AuthNum;
但我不知道如何转换FIRST
运营商。有什么想法吗?我是否需要添加与ORDER BY
相关联的GROUP BY
,以便我可以TAKE 1
?
在这种情况下,MIN
会给出相同的结果吗?
BTW PlaceOfService,StaffId是字符串。
答案 0 :(得分:0)
这样的事情应该非常接近。仔细检查这是否返回正确的信息。
SELECT top 1 AuthNum
, AuthStatus
, DateCreated
, MIN(DateInitiated) AS DateInitiated
, EventClassification
, PlaceOfService
, Lob
, MemId
, MAX(NoticeDate) AS NoticeDate
, MAX(Tat) AS Tat
, StaffId
FROM PA_TAT_Detailed
where PlaceOfService not in ('Inpatient Hospital', 'Office - Dental', 'Dialysis Center')
GROUP BY AuthNum
, AuthStatus
, DateCreated
, EventClassification
, PlaceOfService
, Lob
, MemId
, StaffId
HAVING MAX(Tat) Is Null
OR (MAX(Tat) >= 0 AND MAX(Tat) <= 28)
ORDER BY AuthNum;