2016-05-30 50 views
2

我想在Dx1, Dx2, Dx3中找到添加相同类别和组重复该类别名称的次数。跨多列计数

表分类:

ID Name 
1 A 
2 B 

表DX:

ID Dx 1 Dx 2 Dx 3 
1 1  1  1 
2 1  1  2 

结果查询:

Category_name Count_dx* 
A    5 
B    1 

感谢。

+1

你的问题是什么? – Daan

+0

它会更好。如果您显示*尝试查询* –

+0

欢迎您堆栈溢出。请编辑您的问题,向我们展示您迄今为止所尝试的内容,以及您在哪里遇到困难。这不是“按需写入代码网站”。请花几分钟[游览](http:// stackoverflow/tour)了解该网站的工作原理。 –

回答

1

我给出了答案,虽然你的问题似乎是隐含的。

SELECT 
Categories.Name, 
COUNT(*) AS Count_dx 
FROM Categories 
INNER JOIN 
(
    SELECT 
    Dx1 dx_val 
    FROM Dx 

    UNION ALL 

    SELECT 
    Dx2 dx_val 
    FROM Dx 

    UNION ALL 

    SELECT 
    Dx3 dx_val 
    FROM Dx 
) AS t 
ON Categories.ID = t.dx_val 
GROUP BY t.dx_val; 

也许你想在Dx table获得类别ID(每个类别)的计数横跨三列(Dx1, Dx2 and Dx3)。如果是这样,那么上面的查询完成这项工作。