Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server迁移助手访问-靠近“_Sql Server_Ms Access - Fatal编程技术网

Sql server 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],

我正在尝试将此查询从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], 
      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)