我正在尝试编写附加的查询,但是获取错误"多部分标识符无法绑定"

时间:2014-04-29 15:02:23

标签: sql

Declare @Vaccine varchar(300)
Set @Vaccine = CASE
WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('105','HBIG','HEPA') THEN 'HEPATITIS'
WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('109','109A','109B','109C','HIN1IM','HIN1IS','FLUID','FLUHD','FLULOA','109QIM','109QIS') THEN 'FLU'
WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('102','104','107','108','MMRDEC') THEN 'MMR'
--WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('105','HBIG','HEPA') THEN 'MISC'
--WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('105','HBIG','HEPA') THEN 'TDAP'
--WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('105','HBIG','HEPA') THEN 'FIT'
--WHEN OHM.ohmuser.IMMTYPE.FLDCODE IN ('105','HBIG','HEPA') THEN 'SCREEN'
ELSE NULL
END

BEGIN
SELECT 
    tEmployee.ID as "Employee Number",
    tEmployee.LastName,
    tEmployee.FirstName,
    tEmployee.BirthDate as "Date of Birth",
    tEmployee.Sex as "Gender",
    tEmployeeWorkDetail.Department
    FROM OHM.ohmuser.tEmployee LEFT OUTER JOIN OHM.ohmuser.tEmployeeWorkDetail on tEmployee.EmployeeID = tEmployeeWorkDetail.EmployeeID
--WHERE tEmployeeWorkDetail.Department = '100801000'

SELECT CASE @Vaccine
    WHEN 'HEPATITIS' THEN
        (SELECT     
            HEPATITS.FLDDATE1 as "Hepatitis Vaccine Date",
            HEPATITS.FLDDATE2 as "Hepatitis Vaccine Date2",
            HEPATITS.FLDDATE3 as "Hepatitis Vaccine Date3",
            IMMUNE.FLDTYPE as "Vaccine",
            IMMTYPE.FLDDESCR as "Vaccine Descr",
            HEPATITS.FLDADM1 as "Hepatitis Given By",
            HEPATITS.FLDMAN1 as "Manufacturer",
            HEPLAB.FLDCOMMENT as "Comments",
            HEPATITS.FLDLOGNUM1 as "Lot #1",
            HEPATITS.FLDLOTNUM2 as "Lot #2",
            HEPATITS.FLDLOTNUM3 as "Lot #3",
            HEPLAB.FLDDATE as "Lab Date",
            HEPLAB.FLDSANTBVAL as "Surface Antibody"
            FROM OHM.ohmuser.tEmployee LEFT OUTER JOIN OHM.ohmuser.HEPATITS ON tEmployee.EmployeeID = HEPATITS.FLDEMPLOYEE LEFT OUTER JOIN
                 OHM.ohmuser.HEPLAB ON tEmployee.EmployeeID = HEPLAB.FLDEMPLOYEE LEFT OUTER JOIN
                 OHM.ohmuser.IMMUNE ON tEmployee.EmployeeID = IMMUNE.FLDEMPLOYEE INNER JOIN
                 OHM.ohmuser.IMMTYPE ON IMMUNE.FLDTYPE = IMMTYPE.FLDCODE)

    WHEN 'FLU' THEN
        (SELECT 
            IMMUNE.FLDDATE as "Date",
            IMMUNE.FLDTYPE as "Vaccine",
            IMMTYPE.FLDDESCR as "Vaccine Descr",
            IMMUNE.FLDNOTE1 as "Comments",
            IMMUNE.FLDMANUFACT as "Mfr",
            IMMUNE.FLDLOTNUM as "Lot #",
            IMMUNE.FLDADMIN as "Given By"
            FROM OHM.ohmuser.tEmployee LEFT OUTER JOIN
                 OHM.ohmuser.IMMUNE ON tEmployee.EmployeeID = IMMUNE.FLDEMPLOYEE INNER JOIN
                 OHM.ohmuser.IMMTYPE ON IMMUNE.FLDTYPE = IMMTYPE.FLDCODE)

    WHEN 'MMR' THEN
        (SELECT 
            IMMUNE.FLDDATE as "Date",
            IMMUNE.FLDTYPE as "Procedure",
            IMMTYPE.FLDDESCR as "Procedure Descr",
            IMMUNE.FLDNOTE1 as "Comments",
            IMMUNE.FLDMANUFACT as "Mfr",
            IMMUNE.FLDLOTNUM as "Lot #",
            IMMUNE.FLDADMIN as "Given By",
            TITER.FLDDATE as "Titer Date",
            TITER.FLDTYPE as "Titer Type",
            TITER.FLDRESULT as "Titer Result",
            TITER.FLDCLINIC as "Clinic",
            TITER.FLDCOMMENT as "Comments"
            FROM OHM.ohmuser.tEmployee LEFT OUTER JOIN OHM.ohmuser.TITER ON tEmployee.EmployeeID = TITER.FLDEMPLOYEE LEFT OUTER JOIN 
                 OHM.ohmuser.IMMUNE ON tEmployee.EmployeeID = IMMUNE.FLDEMPLOYEE INNER JOIN
                 OHM.ohmuser.IMMTYPE ON IMMUNE.FLDTYPE = IMMTYPE.FLDCODE)
End
End

我希望SQL的第一部分打印一次。如果@Vaccine等于'肝炎'或'流感'或'MMR',那么它应该打印额外的数据。但是,我收到的错误是“多部分标识符" OHM.ohmuser.IMMTYPE.FLDCODE"不能受约束。“我做错了什么?

1 个答案:

答案 0 :(得分:0)

该消息基本上是说OHM.ohmuser.IMMTYPE.FLDCODE在任何SERVER(OHM),DATABASE(ohmuser),SCHEMA(IMMTYPE),TABLE(FLDCODE)上都不存在。快速检查以确保它能够完成。

我注意到你的所有表格都带有“OHM.ohmuser”前缀。我假设这是一个存储过程,它在同一个数据库“OHM.ohmuser”中。因此,您应该能够删除它的所有实例,使您的代码更易读,更不容易出错。