提示子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的
SELECT 医疗付款方式,
姓名,
性别,
年龄,
生日,
工作单位及地址,
户口地址,
case 医疗付款方式 when '医保' then (select 公民身份证 from VIEW_EMR_PATIENT_all) when '公费' then (select 公民身份证 from VIEW_EMR_PATIENT_all ) else '' end as 公民身份证,
床号,
科别,
病区,
入院床位医生,
出院时间,
出院日期,
入院时间,
入院日期
from VIEW_EMR_PATIENT_all
查询这个语句后,提示:
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
各位大侠,该如何解决呢?
------解决方案--------------------试试:
SELECT 医疗付款方式 ,
姓名 ,
性别 ,
年龄 ,
生日 ,
工作单位及地址 ,
户口地址 ,
CASE 医疗付款方式
WHEN '医保' THEN ( SELECT TOP 1 公民身份证
FROM VIEW_EMR_PATIENT_all
)
WHEN '公费' THEN ( SELECT TOP 1 公民身份证
FROM VIEW_EMR_PATIENT_all
)
ELSE ''
END AS 公民身份证 ,
床号 ,
科别 ,
病区 ,
入院床位医生 ,
出院时间 ,
出院日期 ,
入院时间 ,
入院日期
FROM VIEW_EMR_PATIENT_all
------解决方案--------------------你这个视图有没有哪个是主键?
------解决方案--------------------主要的错误在这个:
case 医疗付款方式 when '医保' then (select 公民身份证 from VIEW_EMR_PATIENT_all) when '公费' then (select 公民身份证 from VIEW_EMR_PATIENT_all ) else '' end as 公民身份证,
这个子查询select 公民身份证 from VIEW_EMR_PATIENT_all会返回多条记录,所以才会报错。
你需要限制这个查询至返回1条。
------解决方案--------------------比如可以这样:
SELECT 医疗付款方式 ,
姓名 ,
&nb