简体   繁体   中英

SQL Server : How to find duplicated rows value

I want to find a duplicate number more than 4 in rows value.

If you have to find a number that is repeated more than four times, and it is not if you repeat it more than four times in a combination of other numbers.

This table is test2:

num1   num2  num3  num4  num5  numb6
--------------------------------------
 1      1     1     2     3      4
 1      1     1     1     3      4
 1      2     3     4     5      6
 1      2     2     1     4      5

My SQL query:

-- CTE
;WITH TEMP(num1, num2, num3, num4, num5, num6) AS 
(
    SELECT 
        RIGHT(num1) AS num1,
        RIGHT(num2) AS num2,
        RIGHT(num3) AS num3,
        RIGHT(num4) AS num4,
        RIGHT(num5) AS num5,
        RIGHT(num6) AS num6
    FROM 
        test2   
)
-- select duplicate number
SELECT 
    num1, num2, num3,
    num4, num5, num6,
    COUNT (CASE 
             WHEN num1 IN (num2, num3, num4, num5, num6)
                THEN 1
          END) +
    COUNT (CASE
             WHEN num2 IN (num3, num4, num5, num6)
                THEN 1
           END) + 
    COUNT (CASE
             WHEN num3 IN (num4, num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num4 IN (num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num5IN (num6)
                THEN 1
           END) AS countNum
FROM 
    TEMP
GROUP BY 
    num1, num2, num3, num4, num5, num6

I get a result like this:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4       4
 1      2     2     1     4      5       4

but I need to get this instead:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4        4

or I need get data

num1   num2  num3  num4  num5  numb6
------------------------------------
 1      1     1     1     3      4

I want to find a duplicate number more than 4 in rows value.

If you have to find a number that is repeated more than four times, and it is not if you repeat it more than four times in a combination of other numbers.

This table is test2:

num1   num2  num3  num4  num5  numb6
--------------------------------------
 1      1     1     2     3      4
 1      1     1     1     3      4
 1      2     3     4     5      6
 1      2     2     1     4      5

My SQL query:

-- CTE
;WITH TEMP(num1, num2, num3, num4, num5, num6) AS 
(
    SELECT 
        RIGHT(num1) AS num1,
        RIGHT(num2) AS num2,
        RIGHT(num3) AS num3,
        RIGHT(num4) AS num4,
        RIGHT(num5) AS num5,
        RIGHT(num6) AS num6
    FROM 
        test2   
)
-- select duplicate number
SELECT 
    num1, num2, num3,
    num4, num5, num6,
    COUNT (CASE 
             WHEN num1 IN (num2, num3, num4, num5, num6)
                THEN 1
          END) +
    COUNT (CASE
             WHEN num2 IN (num3, num4, num5, num6)
                THEN 1
           END) + 
    COUNT (CASE
             WHEN num3 IN (num4, num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num4 IN (num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num5IN (num6)
                THEN 1
           END) AS countNum
FROM 
    TEMP
GROUP BY 
    num1, num2, num3, num4, num5, num6

I get a result like this:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4       4
 1      2     2     1     4      5       4

but I need to get this instead:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4        4

or I need get data

num1   num2  num3  num4  num5  numb6
------------------------------------
 1      1     1     1     3      4

I want to find a duplicate number more than 4 in rows value.

If you have to find a number that is repeated more than four times, and it is not if you repeat it more than four times in a combination of other numbers.

This table is test2:

num1   num2  num3  num4  num5  numb6
--------------------------------------
 1      1     1     2     3      4
 1      1     1     1     3      4
 1      2     3     4     5      6
 1      2     2     1     4      5

My SQL query:

-- CTE
;WITH TEMP(num1, num2, num3, num4, num5, num6) AS 
(
    SELECT 
        RIGHT(num1) AS num1,
        RIGHT(num2) AS num2,
        RIGHT(num3) AS num3,
        RIGHT(num4) AS num4,
        RIGHT(num5) AS num5,
        RIGHT(num6) AS num6
    FROM 
        test2   
)
-- select duplicate number
SELECT 
    num1, num2, num3,
    num4, num5, num6,
    COUNT (CASE 
             WHEN num1 IN (num2, num3, num4, num5, num6)
                THEN 1
          END) +
    COUNT (CASE
             WHEN num2 IN (num3, num4, num5, num6)
                THEN 1
           END) + 
    COUNT (CASE
             WHEN num3 IN (num4, num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num4 IN (num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num5IN (num6)
                THEN 1
           END) AS countNum
FROM 
    TEMP
GROUP BY 
    num1, num2, num3, num4, num5, num6

I get a result like this:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4       4
 1      2     2     1     4      5       4

but I need to get this instead:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4        4

or I need get data

num1   num2  num3  num4  num5  numb6
------------------------------------
 1      1     1     1     3      4

I want to find a duplicate number more than 4 in rows value.

If you have to find a number that is repeated more than four times, and it is not if you repeat it more than four times in a combination of other numbers.

This table is test2:

num1   num2  num3  num4  num5  numb6
--------------------------------------
 1      1     1     2     3      4
 1      1     1     1     3      4
 1      2     3     4     5      6
 1      2     2     1     4      5

My SQL query:

-- CTE
;WITH TEMP(num1, num2, num3, num4, num5, num6) AS 
(
    SELECT 
        RIGHT(num1) AS num1,
        RIGHT(num2) AS num2,
        RIGHT(num3) AS num3,
        RIGHT(num4) AS num4,
        RIGHT(num5) AS num5,
        RIGHT(num6) AS num6
    FROM 
        test2   
)
-- select duplicate number
SELECT 
    num1, num2, num3,
    num4, num5, num6,
    COUNT (CASE 
             WHEN num1 IN (num2, num3, num4, num5, num6)
                THEN 1
          END) +
    COUNT (CASE
             WHEN num2 IN (num3, num4, num5, num6)
                THEN 1
           END) + 
    COUNT (CASE
             WHEN num3 IN (num4, num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num4 IN (num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num5IN (num6)
                THEN 1
           END) AS countNum
FROM 
    TEMP
GROUP BY 
    num1, num2, num3, num4, num5, num6

I get a result like this:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4       4
 1      2     2     1     4      5       4

but I need to get this instead:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4        4

or I need get data

num1   num2  num3  num4  num5  numb6
------------------------------------
 1      1     1     1     3      4

I want to find a duplicate number more than 4 in rows value.

If you have to find a number that is repeated more than four times, and it is not if you repeat it more than four times in a combination of other numbers.

This table is test2:

num1   num2  num3  num4  num5  numb6
--------------------------------------
 1      1     1     2     3      4
 1      1     1     1     3      4
 1      2     3     4     5      6
 1      2     2     1     4      5

My SQL query:

-- CTE
;WITH TEMP(num1, num2, num3, num4, num5, num6) AS 
(
    SELECT 
        RIGHT(num1) AS num1,
        RIGHT(num2) AS num2,
        RIGHT(num3) AS num3,
        RIGHT(num4) AS num4,
        RIGHT(num5) AS num5,
        RIGHT(num6) AS num6
    FROM 
        test2   
)
-- select duplicate number
SELECT 
    num1, num2, num3,
    num4, num5, num6,
    COUNT (CASE 
             WHEN num1 IN (num2, num3, num4, num5, num6)
                THEN 1
          END) +
    COUNT (CASE
             WHEN num2 IN (num3, num4, num5, num6)
                THEN 1
           END) + 
    COUNT (CASE
             WHEN num3 IN (num4, num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num4 IN (num5, num6)
                THEN 1
           END) +
    COUNT (CASE
             WHEN num5IN (num6)
                THEN 1
           END) AS countNum
FROM 
    TEMP
GROUP BY 
    num1, num2, num3, num4, num5, num6

I get a result like this:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4       4
 1      2     2     1     4      5       4

but I need to get this instead:

num1   num2  num3  num4  num5  numb6  countNum
----------------------------------------------
 1      1     1     1     3      4        4

or I need get data

num1   num2  num3  num4  num5  numb6
------------------------------------
 1      1     1     1     3      4

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM