[英]Subquery within a select statement when creating a view
在将数据迁移到新系统中时,我需要创建一个视图。 在创建此视图时,我需要创建一个子查询,在该查询中表将对其自身进行引用以提取上级组织的信息。 我已经将查询创建为独立查询,并且可以正常运行,但是当我将其放入视图并在视图上执行select *时,我收到错误消息“子查询返回的值超过1。这在子查询中是不允许的遵循=,!=,<,<=,>,> =或将子查询用作表达式时。”
以下是我当前的“视图创建”语句。
CREATE view [dbo].[Altai_V_Account] as
SELECT cast(N.ID as nvarchar) as altai_legacymemberid,
RTRIM (n.company) as name,
RTRIM (cd.aha) as aha_memberID,
RTRIM (n.member_type) as altai_base_customertypeid,
RTRIM (na.ADDRESS_1) as address1_line1,
RTRIM (na.ADDRESS_2) as address1_line2,
RTRIM (na.city) as address1_city,
RTRIM (na.state_province) as address1_stateorprovince,
RTRIM (na.zip) as address1_postalcode,
RTRIM (n.Fax) as fax,
RTRIM (n.WORK_PHONE) as telephone1,
RTRIM (cd.FTE) as numberofemployees,
RTRIM (n.co_id) as ParentAccountID,
RTRIM (n.website) as websiteurl,
RTRIM (cd.LICENSED_BEDS) as gha_bedcalculation,
(select CompN.COMPANY
From Name as n inner join Name as CompN on n.CO_ID=CompN.ID
Where n.CO_ID=CompN.id
and n.STATUS='A'
and (n.MEMBER_TYPE ='HCE'
or n.MEMBER_TYPE ='I'
or n.MEMBER_TYPE ='SA'
or n.MEMBER_TYPE ='SI'
or n.MEMBER_TYPE ='SM'
or n.MEMBER_TYPE ='SPON'
or n.MEMBER_TYPE ='SYS'
or n.MEMBER_TYPE ='VP'
or n.MEMBER_TYPE ='VPA'
or n.MEMBER_TYPE ='ASC'
or n.MEMBER_TYPE = 'C'
or n.MEMBER_TYPE = 'HCS'
or n.MEMBER_TYPE = 'NH'
or n.MEMBER_TYPE = 'NMI')) as parentaccount
FROM Name as N
inner join Company_Demo as cd on N.id=cd.ID
inner join Name_Address as na on N.ID=NA.ID
WHERE N.MEMBER_TYPE ='HCE'
or N.MEMBER_TYPE ='I'
or N.MEMBER_TYPE ='SA'
or N.MEMBER_TYPE ='SI'
or N.MEMBER_TYPE ='SM'
or N.MEMBER_TYPE ='SPON'
or N.MEMBER_TYPE ='SYS'
or N.MEMBER_TYPE ='VP'
or N.MEMBER_TYPE ='VPA'
or N.MEMBER_TYPE ='ASC'
or N.MEMBER_TYPE = 'C'
or N.MEMBER_TYPE = 'HCS'
or N.MEMBER_TYPE = 'NH'
or N.MEMBER_TYPE = 'NMI'
and na.STATUS='A'
谢谢!
更新:我不是“ SQL”人员,但是我们的组织中没有人员。 我基本上使用的是公司进行迁移时提供给我的代码示例。 我不知道为什么名称表被称为名称,我们正在使用的软件的设计人员目前以这种方式对其进行命名。
对于此特定子查询,该记录列出了母公司的ID号(co_ID),但未列出公司的名称。 我想让查询看到CO_ID字段,然后使用该ID提取公司名称的会员。 它可以用作普通查询,而不能用作子查询。
事实是,当您使用子查询代替列时,它应该返回标量结果。 那就是它应该返回一行和一列。
在您的情况下,子查询将返回多个行或列。 请首先单独尝试子查询,以检查其是否重新调整了标量值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.