我有一张包含银行账户的表格,其中包含许多相同数量的副本,如:
SELECT
k1.Account_number, COUNT(*) as Counter
FROM
Customers k1
GROUP BY
k1.Account_number
HAVING
COUNT(*) > 1
order by Counter
给出:
Account_number Counter
DE1234567891234566786545 3
FR8734280472398472394823 4
IT48723849y3294723493284 4
IT3543534534423421321323 4
FR4798237492864239847329 6
FR4723984793284723984732 7
我需要的是再添加一个列,其中包含拥有此帐户的客户数量。 我试过这个:
STUFF((select '; ' + Customer_name from Customers FOR XML PATH('')),1,1,'') [Some_column]
但是它把所有客户都放在那张桌子上:(
答案 0 :(得分:1)
您需要子查询中的关联子句:
SELECT k1.Account_number, COUNT(*) as Counter,
STUFF( (SELECT '; ' + c2.Customer_name
FROM Customers c2
WHERE c2.Account_number = k1.Account_Number
FOR XML PATH('')
), 1, 1, ''
) as Customers
FROM Customers k1
GROUP BY k1.Account_number
HAVING COUNT(*) > 1
ORDER BY Counter
答案 1 :(得分:0)
它可能适合你
SELECT
k1.Account_number, COUNT(*) as Counter
,STUFF((SELECT ','+Customer_name FROM Customers K2 WHERE K2.Account_number= k1.Account_number FOR XML PATH('')),1,1,'')
FROM
Customers k1
GROUP BY
k1.Account_number
HAVING
COUNT(*) > 1
order by Counter