2016-06-08 84 views
1
SELECT CMS_ORGANIZATION.ORG_ACTOR_GUID, CMS_EMPLOYMENT.PERIOD_TO AS EventDate, CMS_INDIVIDUAL.FULL_NAME as Name, 'Ceased' AS EventType, 'Overseeing Executive Director' AS TypeOfChange, CMS_ORGANIZATION.REG_NAME 
    FROM CMS_EMPLOYMENT INNER JOIN CMS_INDIVIDUAL ON CMS_EMPLOYMENT.EMPLOYEE_ACTOR_GUID = CMS_INDIVIDUAL.IND_ACTOR_GUID INNER JOIN 
     CMS_ROLE_ASSUMED ON CMS_EMPLOYMENT.ROLE_ASSUMED_GUID = CMS_ROLE_ASSUMED.ROLE_ASSUMED_PK INNER JOIN CMS_ORGANIZATION ON CMS_ROLE_ASSUMED.TARGET_ACTOR_GUID = CMS_ORGANIZATION.ORG_ACTOR_GUID INNER JOIN 
     CMS_MASTER_SETUP ON CMS_EMPLOYMENT.DESIGNATION_GUID = CMS_MASTER_SETUP.MASTER_SETUP_PK  
    UNION 

    SELECT CMS_ORGANIZATION.ORG_ACTOR_GUID, CMS_ORG_SHARES_HISTORY.EFFECTIVE_DATE AS EventDate, CMS_MASTER_SETUP.Description as Currency, CONVERT(varchar(50), CAST(CMS_ORG_SHARES.AUTHORIZED_CAP_AMOUNT AS money), 1), 
      'Changed to ' AS EventType, 'Share Capital (Authorized)' AS TypeOfChange, CMS_ORGANIZATION.REG_NAME 
    FROM CMS_ORGANIZATION INNER JOIN CMS_ORG_SHARES ON CMS_ORGANIZATION.ORG_ACTOR_GUID = CMS_ORG_SHARES.ORG_ACTOR_GUID INNER JOIN CMS_ORG_SHARES_HISTORY ON CMS_ORG_SHARES.ORG_SHARES_PK = CMS_ORG_SHARES_HISTORY.ORG_SHARES_GUID INNER JOIN CMS_MASTER_SETUP ON CMS_ORGANIZATION.CURRENCY_GUID = CMS_MASTER_SETUP.MASTER_SETUP_PK 
    UNION 

    SELECT CMS_ORGANIZATION.ORG_ACTOR_GUID, CMS_ORG_SHARES_HISTORY.EFFECTIVE_DATE AS EventDate, CONVERT(varchar(50), CAST(CMS_ORG_SHARES.PAID_UP_CAP_AMOUNT AS money), 1), 
      'Changed to' AS EventType, 'Share Capital (Paid Up)' AS TypeOfChange, CMS_ORGANIZATION.REG_NAME 
    FROM CMS_ORGANIZATION INNER JOIN CMS_ORG_SHARES ON CMS_ORGANIZATION.ORG_ACTOR_GUID = CMS_ORG_SHARES.ORG_ACTOR_GUID INNER JOIN 
      CMS_ORG_SHARES_HISTORY ON CMS_ORG_SHARES.ORG_SHARES_PK = CMS_ORG_SHARES_HISTORY.ORG_SHARES_GUID 

我已經得到了這個錯誤:
「的所有查詢使用UNION合併,交叉或EXCEPT運營商必須在其目標列表中的表達式的數目相等。」在第一行。請問如何查詢「CMS_MASTER_SETUP.Description作爲貨幣,CONVERT(varchar(50),CAST(CMS_ORG_SHARES.AUTHORIZED_CAP_AMOUNT AS貨幣),1)」在名稱列下,但都作爲貨幣SQL服務器 - 聯盟

回答

0

因爲您必須擁有在每個聯合組中相同數量的列,可以在第一組和第三組中包含一個空白佔位符:例如, 選擇 .. '' 作爲貨幣, ..

如果實現目標。這會給你每組7列。

+0

它現在也發生在我身上,你可以做一個簡單的+字符。 CMS_MASTER_SETUP.Description +','+ CONVERT(varchar(50),CAST(CMS_ORG_SHARES.AUTHORIZED_CAP_AMOUNT AS貨幣),1)貨幣 – luxdvie

+0

不可能包含空白佔位符,因爲第一個查詢的數據與第二個查詢的數據不同一。例如,第一個查詢沒有貨幣值(NULL)。我可能需要運行另一個查詢,例如,如果未插入第二個查詢中的貨幣,我會設置貨幣,之後會自動轉換爲「USD」。但如果我這樣做,第一個和第三個查詢將有貨幣「美元」,如果你知道我的意思是 –

0

錯誤清楚地表明「操作員必須在其目標列表中具有相同數量的表達式」。這意味着您應該在所有3個查詢中的SELECT子句中擁有相同的一組字段。

示例:您在第一個查詢中選擇「CMS_INDIVIDUAL.FULL_NAME作爲名稱」,但在其他兩個查詢中沒有名稱字段。你將無法像這樣做聯合。

+0

不可能包含空白佔位符,因爲第一個查詢中的數據與第二個查詢中的數據不同。例如,第一個查詢沒有貨幣值(NULL)。我可能需要運行另一個查詢,例如,如果未插入第二個查詢中的貨幣,我會設置貨幣,之後會自動轉換爲「USD」。但如果我這樣做,第一個和第三個查詢將有貨幣「美元」,如果你知道我的意思 –

+0

我不知道你是否瞭解UNION的工作原理。除非您有相同的字段集合,否則UNION不能使用。我仍然不確定爲什麼你要在第一個查詢中選擇名稱字段而不是其他2.至少你可以在其他兩個查詢中'NULL as Name'。對於在查詢中不匹配的其他字段,您可以做類似的事情 –