2

特定の列に基づいて重複レコード数を取得する必要があります。フィールドに NULL 値がある場合、重複とは見なされません。

SELECT  Leadid,COUNT(Lead)
FROM    #CheckNULLCOUNT
GROUP   BY LeadId,Lead

ただし、次のクエリでは重複と見なされます

 SELECT  Leadid,COUNT(ISNULL(Lead,'-'))
    FROM    #CheckNULLCOUNT
    GROUP   BY LeadId,Lead

私の質問は、NULL 列の重複カウントを取得するより良い方法があるということです。

/* Create Temporary Table*/
 CREATE table #CheckNULLCOUNT(
    Id Int PRIMARY key
    ,name varchar(100) 
    ,LeadId Int
    ,Lead varchar(100))

    /* Insert data into temporary Table*/

INSERT INTO #CheckNULLCOUNT VALUES(1,'Skip',101,'lead1')
INSERT INTO #CheckNULLCOUNT VALUES(2,'Turner',102,'lead2')
INSERT INTO #CheckNULLCOUNT VALUES(3,'Molisa',103,'lead3')
INSERT INTO #CheckNULLCOUNT VALUES(4,'Mario',104,'lead4')
INSERT INTO #CheckNULLCOUNT VALUES(5,'Jack',105,'lead5')
INSERT INTO #CheckNULLCOUNT VALUES(6,'Kris',106,'lead6')
INSERT INTO #CheckNULLCOUNT VALUES(7,'John',107,'lead7')
INSERT INTO #CheckNULLCOUNT VALUES(8,'Owen',109,NULL)
INSERT INTO #CheckNULLCOUNT VALUES(9,'Bill',109,NULL)
INSERT INTO #CheckNULLCOUNT VALUES(10,'Martin',109,NULL)
INSERT INTO #CheckNULLCOUNT VALUES(11,NULL,111,'lead9')
INSERT INTO #CheckNULLCOUNT VALUES(12,NULL,111,'lead9')

 /* **NOT** treating as duplicate */
SELECT  Leadid,COUNT(ISNULL(Lead,'-'))
FROM    #CheckNULLCOUNT
GROUP   BY LeadId,Lead


/* treating as duplicate */

SELECT  Leadid,COUNT(ISNULL(Lead,'-'))
FROM    #CheckNULLCOUNT
GROUP   BY LeadId,Lead

DROP TABLE #CheckNULLCOUNT
4

3 に答える 3

3
SELECT  Leadid,
        COUNT(Lead) totalNOTNULL,
        SUM(CASE WHEN Lead IS NULL THEN 1 ELSE 0 END) totalNULL
FROM    #CheckNULLCOUNT
GROUP   BY LeadId, [LEAD]
于 2013-03-01T15:31:34.947 に答える
1

代替ソリューションとして、次の 2 つを使用できます。

SELECT  Leadid,COUNT(Lead)
FROM    #CheckNULLCOUNT
GROUP   BY LeadId, 
     CASE WHEN Lead IS NULL 
        THEN CAST(LeadId AS varchar(8)) 
        ELSE Lead END, Lead

しかし、そのため、CASTあまり良くありません。他のアイデアを確認するために追加したかっただけです.GROUP BY自体はどのように使用できますかCASE...WHEN

于 2013-03-01T15:42:05.290 に答える
0

なぜだけではない

    SELECT  Leadid,COUNT(*)
    FROM    #CheckNULLCOUNT
    GROUP   BY LeadId,Lead
于 2013-03-01T16:00:52.503 に答える