Sql server SQL Server迁移助手访问-靠近“
我正在尝试将此查询从Access迁移到SQL Server中的视图:Sql server SQL Server迁移助手访问-靠近“,sql-server,ms-access,Sql Server,Ms Access,我正在尝试将此查询从Access迁移到SQL Server中的视图: CREATE VIEW dbo.[2010Q1-Q2 BLABSI Rate by Hospitalstep1] AS SELECT [AcuteHospitals].[HospitalName], [SummaryYQ_LOV].[SummaryYQ], Sum([RateTable_CLABData].[clabcount]) AS [Number of CLABSI],
CREATE VIEW dbo.[2010Q1-Q2 BLABSI Rate by Hospitalstep1]
AS
SELECT
[AcuteHospitals].[HospitalName],
[SummaryYQ_LOV].[SummaryYQ],
Sum([RateTable_CLABData].[clabcount]) AS [Number of CLABSI],
Sum([RateTable_CLABData].[numcldays]) AS [Central Line Days],
(CASE
WHEN [AcuteHospitals].[LicensedBeds] < '201' THEN 'a'
ELSE (CASE
WHEN [AcuteHospitals].[LicensedBeds] > '500' THEN 'c'
ELSE 'b'
END)
END) AS SizeCat,
(CASE
WHEN [AcuteHospitals].[LicensedBeds] < '201' THEN '<200 Licensed Beds'
ELSE (CASE
WHEN [AcuteHospitals].[LicensedBeds] > '500' THEN '>500 Licensed Beds'
ELSE '201-500 Licensed Beds'
END)
END) AS BedSize
FROM
([AcuteHospitals]
LEFT JOIN [RateTable_CLABData]
ON [AcuteHospitals].[NHSN_ID] = [RateTable_CLABData].[orgID])
LEFT JOIN [SummaryYQ_LOV]
ON [RateTable_CLABData].[summaryYQ] = [SummaryYQ_LOV].[StartDate]
WHERE ((([RateTable_CLABData].[loccdc]) NOT LIKE '%ped%'))
GROUP BY [AcuteHospitals].[HospitalName], [SummaryYQ_LOV].[SummaryYQ], (
CASE
WHEN [AcuteHospitals].[LicensedBeds] < '201' THEN 'a'
ELSE (
CASE
WHEN [AcuteHospitals].[LicensedBeds] > '500' THEN 'c'
ELSE 'b'
END)
END), (
CASE
WHEN < '201' THEN '≤200 Licensed Beds'
ELSE (
CASE
WHEN > '500' THEN '>500 Licensed Beds'
ELSE '201-500 Licensed Beds'
END)
END)
GO
但我一直在“上遇到语法错误,如果[AcuteHospitals].[LicensedBeds]是数字列,则不应将其与字符串值进行比较:
使用
而不是
[AcuteHospitals].[LicensedBeds] < '201'
Access对这类事情比SQL Server更宽容。我从您发布的代码片段中看到了一些东西 1有两个开括号,但只有一个闭合括号。这可能与您的错误有关。实际上,在CASE语句周围不需要任何括号 2您可以将您的案例陈述简化为以下内容
CASE
WHEN [AcuteHospitals].[LicensedBeds] < '201' THEN 'a'
WHEN [AcuteHospitals].[LicensedBeds] > '500' THEN 'c'
ELSE 'b'
END
如果LicensedBeds是数字的,SQL将隐式地将“201”转换为正确的类型
CASE
WHEN [AcuteHospitals].[LicensedBeds] < '201' THEN 'a'
WHEN [AcuteHospitals].[LicensedBeds] > '500' THEN 'c'
ELSE 'b'
END
CASE
WHEN < '201' THEN '≤200 Licensed Beds'
ELSE (
CASE
WHEN > '500' THEN '>500 Licensed Beds'
ELSE '201-500 Licensed Beds'
END)
END)