2017-07-18 153 views
0

我試圖從兩個表中選擇特定的列,其中一個是派生表,但由於某些原因,我只能選擇*從兩個表中選擇列(內部連接) - 內部連接

這工作:

SELECT *   
FROM   
    (

--Pivot the Custom Fields into a derived table-------------- 

     SELECT [Id], [CustomField], [CustomField2], [CustomField3], [CustomField4], [CustomField5] 
     FROM 
       (
        SELECT [Id], [FieldValue], [FieldName]  
        FROM 
        EntityCustomFieldValues 
        AS t1 
        INNER JOIN Contact t2 ON t1.ParentId = t2.Id 
       )AS SourceTable 

        PIVOT 
        (
        MAX([FieldValue]) FOR [FieldName] IN ([CustomField], [CustomField2], [CustomField3], [CustomField4], [CustomField5]) 
        )AS PivotTable 

----------------------------------------------------------- 
    ) AS t 

    INNER JOIN Contact ON t.Id = Contact.Id 

的問題是,一旦我儘量選擇特定列,我得到一個語法錯誤???

SELECT [t].[Id], [Contact].[FirstName], [t].[CustomField], [t].[CustomField2],   
FROM   
    (

--Pivot the Custom Fields--------------------------------- 

     SELECT [Id], [CustomField], [CustomField2], [CustomField3], [CustomField4], [CustomField5] 
     FROM 
       (
        SELECT [Id], [FieldValue], [FieldName]  
        FROM 
        EntityCustomFieldValues 
        AS t1 
        INNER JOIN Contact t2 ON t1.ParentId = t2.Id 
       )AS SourceTable 

        PIVOT 
        (
        MAX([FieldValue]) FOR [FieldName] IN ([CustomField], [CustomField2], [CustomField3], [CustomField4], [CustomField5]) 
        )AS PivotTable 

---------------------------------------------------- 
    ) AS t 

    INNER JOIN Contact ON t.Id = Contact.Id; 

消息156,級別15,狀態1,行 '從' 關鍵字近4 語法不正確。

Msg 156,Level 15,State 1,Line 25 關鍵字'AS'附近的語法不正確。

我試圖把它包在另一個Select中,但那也不起作用。

+2

你必須第一個'FROM'前的逗號。 –

+0

當你使用'AS SourceTable'時,我不認爲你需要關鍵字'AS',儘管我對SQL服務器不太熟悉,所以我可能會錯誤 – Hatik

+0

這樣花太多時間逗號。 .. ....我總是搞砸了一些世俗的細節... –

回答

1

試試這個:

SELECT [t].[Id] 
    ,[Contact].[FirstName] 
    ,[t].[CustomField] 
    ,[t].[CustomField2] 
FROM (
    --Pivot the Custom Fields--------------------------------- 
    SELECT [Id] 
     ,[CustomField] 
     ,[CustomField2] 
     ,[CustomField3] 
     ,[CustomField4] 
     ,[CustomField5] 
    FROM (
     SELECT [Id] 
      ,[FieldValue] 
      ,[FieldName] 
     FROM EntityCustomFieldValues AS t1 
     INNER JOIN Contact t2 ON t1.ParentId = t2.Id 
     ) AS SourceTable 
    PIVOT(MAX([FieldValue]) FOR [FieldName] IN (
       [CustomField] 
       ,[CustomField2] 
       ,[CustomField3] 
       ,[CustomField4] 
       ,[CustomField5] 
       )) AS PivotTable 
    ---------------------------------------------------- 
    ) t 
INNER JOIN Contact ON t.Id = Contact.Id; 
1

試試這個請:

SELECT [t].[Id], [Contact].[FirstName], [t].[CustomField], [t].[CustomField2] 
    FROM   
    (

--Pivot the Custom Fields--------------------------------- 

     SELECT [Id], [CustomField], [CustomField2], [CustomField3], [CustomField4], [CustomField5] 
     FROM 
       (
        SELECT [Id], [FieldValue], [FieldName]  
        FROM 
        EntityCustomFieldValues t1 
        INNER JOIN Contact t2 ON t1.ParentId = t2.Id 
       ) SourceTable 

        PIVOT 
        (
        MAX([FieldValue]) FOR [FieldName] IN ([CustomField], [CustomField2], [CustomField3], [CustomField4], [CustomField5]) 
        ) PivotTable 

---------------------------------------------------- 
    ) t 

    INNER JOIN Contact ON t.Id = Contact.Id;