0
我們需要創建視圖,因爲我們正在將數據遷移到新系統中。在創建這個視圖時,我需要創建一個子查詢,在這個子查詢中表引用它自己來提取父組織信息。我創建了查詢作爲一個獨立的,它工作正常,但是當我把它放入視圖,並對視圖做select *時,我得到錯誤消息「子查詢返回多個值,這是不允許的,當子查詢如下=,!=,<,< =,>,> =或者當子查詢用作表達式時。「創建視圖時select語句內的子查詢
以下是我當前的查看創建語句。
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。它作爲一個普通的查詢,而不是作爲一個子查詢。
這絕對是一個奇怪的查詢。您正在訪問相同的表三次,這可能是可以避免的。你修剪所有的領域,甚至ID,我想知道爲什麼他們甚至被允許進入數據庫時,空間打擾你。而你使用硬編碼值的成員類型,你應該更好地從某個表中獲得該組。最後,子查詢與主查詢無關,因此始終選擇相同的值。在你的情況下值** s **,這就是爲什麼你會得到錯誤。 –
'名稱'是一個表格的奇怪名稱。它包含什麼?公司?那麼爲什麼它不是被稱爲「公司」呢?它是分層的(遞歸)不知何故?爲什麼?什麼級別代表?層次結構中是否有最大數量的層次?如果你解釋了你的查詢應該做什麼,這可能會有幫助,所以我們可以給你一些建議。 –