用SQL查询

时间:2016-02-07 07:20:44

标签: mysql

我正在尝试在sql中编写一个查询,它给出了不同的Pan详细信息以及表中名称多次出现的Pan的计数

例如:考虑下表

ID  Name Pan
1   ABC 123
2   ABC 123
3   DEF 456
4   ABC 124
5   WW  234
6   WW  2345

预期结果是:

Pan  Name Count1
123  ABC   2
124  ABC   1
234  WW    1
2345 WW    1

有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

试试这个。希望以下声明可以帮助你。

    SELECT PAN, NAME , COUNT(ID) FROM TAB_PAN GROUP BY PAN, NAME HAVING COUNT(ID)>1

根据谈话,要求似乎有所不同。 以下代码可以正常工作。

给定数据的模式

    SELECT * INTO #TAB FROM (
    SELECT 1 ID ,   'ABC' NAME , 123 PAN
    UNION ALL
    SELECT 2,   'ABC', 123
    UNION ALL
    SELECT 3 ,  'DEF' ,456
    UNION ALL
    SELECT 4 ,  'ABC', 124
    UNION ALL
    SELECT 5 ,  'WW' , 234
    UNION ALL
    SELECT 6 ,  'WW'  ,2345
    )AS A

所需案例的逻辑

     SELECT PAN, NAME,COUNT(ID) ACTUAL_COUNT   FROM #TAB t
     WHERE (SELECT COUNt(NAME) FROM #TAB WHERE NAME= t.NAME) >1 
     GROUP BY PAN, NAME

答案 1 :(得分:1)

SELECT DISTINCT x.*
           FROM 
              ( SELECT pan
                     , name
                     , COUNT(*) total
                  FROM my_table
                 GROUP 
                    BY pan
                     , name 
              ) x
           JOIN my_table y
             ON y.name = x.name
            AND y.pan <> x.pan