2017-04-26 78 views
-2

我有一个数据库与2列是(和需要)相同类型的客户ID。我正在尝试这样一个SQL查询,它将列出每个客户ID在表中显示的次数。到目前为止,我拥有以下内容,我需要将每个单独的ID添加到一起,以便仅列出一次。 enter image description hereSQL Union与分组和总和

SELECT TblMatch.CustomerID1, Count(TblMatch.[Match ID]) AS [TotalMatch ID] 
FROM TblMatch 
GROUP BY TblMatch.CustomerID1 
UNION 
SELECT TblMatch.CustomerID2, Count(TblMatch.[Match ID]) AS [TotalMatch ID] 
FROM TblMatch 
GROUP BY TblMatch.CustomerID2; 
+1

你想要mysql sql和msaccess格式? – maSTAShuFu

+1

那么哪个数据库呢?你需要选择一个。 –

+1

这看起来不像MySQL。 – Pang

回答

1

试试这个:

select ID, count([Match ID]) as [TotalMatch ID] from 
(
SELECT TblMatch.CustomerID1 as ID, TblMatch.[Match ID] 
FROM TblMatch 
UNION ALL 
SELECT TblMatch.CustomerID2 as ID, TblMatch.[Match ID] 
FROM TblMatch 
) tmp 
group by ID 
+0

这工作!非常感谢! – tori

0

像这样的事情应该工作,你的工会所有汇总:

SELECT 
    TblMatch.CustomerID1, 
    Count(data.[Match ID]) AS [TotalMatch ID] 
FROM 
    (
    TblMatch, 
    (
     TblMatch.[Match ID] 
    ) 
    UNION ALL 
    SELECT 
    TblMatch.CustomerID2, 
    (
     TblMatch.[Match ID] 
    ) 
    FROM 
    TblMatch 
) 
    data 
GROUP BY 
    TblMatch.CustomerID1; 
0

您的查询应该是这样的:

SELECT * FROM (
    SELECT CUSTOMERID1,COUNT(*) 
     FROM TBLMATCH 
    GROUP BY CUSTOMERID1 
UNION ALL 
    SELECT CUSTOMERID2, COUNT(*) 
     FROM TBLMATCH 
    GROUP BY CUSTOMERID2 
)ORDER BY CUSTOMERID1; 
+0

OP已经标记了MySQL,MS SQL Server和MS Access,并且您带有Oracle答案... – jarlh

+0

我认为查询逻辑很重要! – shivam