2013-12-19 82 views
0

我有一個在Microsoft Access環境中工作的UNION查詢。我在SQL Server中遇到的錯誤是:「每個GROUP BY表達式都必須包含至少一個不是外部引用的列」。查詢採用以下格式:SQL Server中的訪問查詢中斷

SELECT tblA.ProjectID, 
     tblB.PersonnelID, 
     "TeamMember" AS ProjectRole 
FROM tblA INNER JOIN tblB ON (tblA.ProjectID = tblB.ProjectID) 
    AND (tblA.ProjectID = tblB.ProjectID) 
GROUP BY tblA.ProjectID, tblB.PersonnelID, "TeamMember" 
HAVING ((Not (tblB.PersonnelID) Is Null) AND ((Sum(tblB.Hours))>0)) 

如何獲取此查詢適用於SQL Server?

+0

你不需要做相同的條件下'(tblA.ProjectID = tblB.ProjectID)'並且在查詢中除了這'馬林Smith'建議使用單引號沒有任何問題...... –

+0

感謝您的反饋Vishal。問題確實不同。 –

回答

0

afaik having只適用於總和功能,所以我把not null東西移動到where。也引號需要單打。我也將加入標準放在一個括號內。試試這個:

SELECT tblA.ProjectID, 
     tblB.PersonnelID, 
     'TeamMember' AS ProjectRole 
    FROM tblA 
INNER JOIN 
     tblB 
    ON (tblA.ProjectID = tblB.ProjectID 
    AND tblA.ProjectID = tblB.ProjectID) 
where tblB.PersonnelID is not null 
GROUP BY 
     tblA.ProjectID 
    , tblB.PersonnelID 
    , 'TeamMember' 
HAVING Sum(tblB.Hours) > 0