2013-06-18 80 views
0
SELECT  
    ETRN_MFTransactionGroup.FolioNumber, 
    ETRN_MFTransactionGroup.PrimaryApplicantContactID, 
    ETRN_MFTransaction.PK_TransactionGroupID AS Expr1, 
    ETRN_MFTransaction.PK_SchemeProductID, 
    ETRN_MFTransaction.Units, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.PK_ContactID, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.UserID, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.FName, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.MName, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.LName,  
    PA_E_INSTRUMENTS.dbo.EINS_MFSchemeProduct.PK_SchemeProductID AS Expr2, 
    PA_E_INSTRUMENTS.dbo.EINS_MFSchemeProduct.RegistrarCode, 
    ETRN_MFTransactionGroup.PK_TransactionGroupID 
FROM 
    ETRN_MFTransactionGroup 
INNER JOIN 
    ETRN_MFTransaction ON 
    ETRN_MFTransactionGroup.PK_TransactionGroupID = ETRN_MFTransaction.PK_TransactionGroupID 
INNER JOIN 
    PA_E_CUSTOMER.dbo.ECUS_Contact ON   
    ETRN_MFTransactionGroup.PrimaryApplicantContactID =      
     PA_E_CUSTOMER.dbo.ECUS_Contact.PK_ContactID 
INNER JOIN 
    PA_E_INSTRUMENTS.dbo.EINS_MFSchemeProduct ON 
    ETRN_MFTransaction.PK_SchemeProductID = 
     PA_E_INSTRUMENTS.dbo.EINS_MFSchemeProduct.PK_SchemeProductID 
**GROUP BY 
    ETRN_MFTransactionGroup.FolioNumber,** 
    ETRN_MFTransactionGroup.PrimaryApplicantContactID,     
    ETRN_MFTransaction.PK_TransactionGroupID, 
    ETRN_MFTransaction.PK_SchemeProductID, 
    ETRN_MFTransaction.Units, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.PK_ContactID, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.UserID, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.FName, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.MName, 
    PA_E_CUSTOMER.dbo.ECUS_Contact.LName, 
    PA_E_INSTRUMENTS.dbo.EINS_MFSchemeProduct.PK_SchemeProductID, 
    PA_E_INSTRUMENTS.dbo.EINS_MFSchemeProduct.RegistrarCode, 
    ETRN_MFTransactionGroup.PK_TransactionGroupID 

上述查詢工作絕對好,但我只需要按FolioNumber(即 - ETRN_MFTransactionGroup.FolioNumber)組。其餘的字段根本不需要分組!SQL Server 2008問題與GROUP BY

+0

您必須將所有您希望從表中選擇的組合在一起,以便不使用聚合來計算。如果您僅在FolioNumber上進行分組,則只能選擇該單個字段。 – Guffa

+0

@Guffa說,並進一步擴大,如果一切都是內連接,爲什麼你需要根據?如果您有多個folio號碼記錄,而某個明顯的不能處理(假設這是正確的邏輯),那麼group by是此時此錯誤的解決方案 – Wayne

+0

如果您實際上每個'ETRN_MFTransactionGroup.FolioNumber'需要一行'max(date)'或'max(id)'你可能會發現這有幫助:[在每個GROUP BY組中選擇第一行?](http://stackoverflow.com/questions/3800551/select-first-row-in - 每個羣組的小組) –

回答

0

如果您不想在其他字段上分組,則需要一些聚合函數來告訴SQL如何處理多個記錄。 MAX或MIN可以很好地適用於varchar字段。 SUM,AVERAGE適用於數字。