我想通过ContactID进行分组,并且仅重新组合具有不同计数的自动编号的组> 1.使用Pandas,我会做类似的事情:
refinance_data = refinance_data.groupby('ContactID').filter(lambda x: x.AutoNumber.nunique() > 1)
我的SQL查询......
SELECT Ge.LoanAgreementID, Ge.Amount, Ge.ContactID, Ge.TransactionDate, Lo.AutoNumber, Ge.GeneralLedgerType FROM GeneralLedger as Ge
JOIN LoanAgreements Lo ON Ge.LoanAgreementID = Lo.LoanAgreementID
GROUP BY Ge.ContactID HAVING COUNT(DISTINCT Lo.AutoNumber) >1;
产生以下错误:
Msg 8120, Level 16, State 1, Line 1
Column 'GeneralLedger.LoanAgreementID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
答案 0 :(得分:1)
可能是这个? (如果我理解你的解释。)我不知道熊猫。
SELECT Ge.LoanAgreementID, Ge.Amount, Ge.ContactID, Ge.TransactionDate, Lo.AutoNumber, GeneralLedgerType GETBND
FROM GeneralLedger AS Ge
JOIN LoanAgreements Lo ON Ge.LoanAgreementID = Lo.LoanAgreementID
WHERE
Ge.ContactID IN (
SELECT Ge1.ContactID
FROM GeneralLedger AS Ge1
JOIN LoanAgreements Lo1 ON Ge1.LoanAgreementID = Lo1.LoanAgreementID
GROUP BY Ge1.ContactID
HAVING COUNT(DISTINCT Lo1.AutoNumber) >1
)
答案 1 :(得分:1)
您可以加入contactId:
SELECT Ge.LoanAgreementID, Ge.Amount, Ge.ContactID, Ge.TransactionDate, Lo.AutoNumber, Ge.GeneralLedgerType
FROM GeneralLedger as Ge
INNER JOIN
(
SELECT Ge.ContactID
FROM GeneralLedger as Ge
JOIN LoanAgreements Lo ON Ge.LoanAgreementID = Lo.LoanAgreementID
GROUP BY Ge.ContactID
HAVING COUNT(DISTINCT Lo.AutoNumber) >1
) t
ON Ge.ContactID = t.ContactID;
答案 2 :(得分:1)
选择AutoNumber
存在多个不同LoanAgreementID
的所有内容:
select
Ge.LoanAgreementID
, Ge.Amount
, Ge.ContactID
, Ge.TransactionDate
, Lo.AutoNumber
, Ge.GeneralLedgerType
from GeneralLedger as Ge
inner join LoanAgreements Lo
on Ge.LoanAgreementID = Lo.LoanAgreementID
where exists (
select 1
from LoanAgreements as i
where i.LoanAgreementID = Lo.LoanAgreementID
and i.AutoNumber != Lo.AutoNumber
)