2013-06-18 2 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 (i.e - ETRN_MFTransactionGroup.FolioNumber). Группировка по остальным полям не требуется вообще!SQL Server 2008 Issue With GROUP BY

+0

Вам нужно объединить все, что вы хотите выбрать из таблицы, чтобы вы не использовали агрегаты для расчета. Если вы группируете только FolioNumber, вы можете выбрать только одно это поле. – Guffa

+0

как @Guffa сказал и для дальнейшего расширения, если все внутреннее соединение, зачем вам вообще группироваться? Если у вас несколько записей записей фолио, которые отдельные не могут обрабатывать (при условии, что это правильная логика), тогда группа из которых является неправильным решением для этого набора в это время – Wayne

+0

Если вы действительно хотите, чтобы одна строка на 'ETRN_MFTransactionGroup.FolioNumber' на основе 'max (date)' или 'max (id)' вы можете найти это полезным: [Выбрать первую строку в каждой группе GROUP BY?] (http://stackoverflow.com/questions/3800551/select-first-row-in -each-group-by-group) –

ответ

0

Если вы не хотите группировать другие поля, вам нужно выполнить некоторую агрегированную функцию, чтобы указать SQL, как обрабатывать несколько записей. MAX или MIN хорошо работают для полей varchar. SUM, СРЕДНЕЕ работает хорошо для численных.