繁体   English   中英

创建视图时,select语句内的子查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM