2016-08-08 9 views
1

Ich habe Kunden Tabelle wie die folgende:Wie wie viele eindeutige Datensätze mit mehreren Datensätzen in einer Tabelle zählen

CustomerID, ReferenceID  
1 ,101  
2 ,101  
3 ,101  
4 ,102  
5 ,102  
6 ,103 

Ich möchte, wie viele referenceId zählen hat mehrere customerID und ich schreibe die folgende Abfrage:

SELECT CustomerID, ReferenceID, Count(1) 
FROM Customer 
group by CustomerID, ReferenceID  
having Count(1) >1 

sollte ich Nummer 2 wegen 2 referenceId mehrere customerID haben, aber ich habe nicht eine beliebige Anzahl

+1

müssen Sie die 'CustomerID' sowohl aus dem' SELECT' entfernen bekommen und die 'GROUP BY' – Lamak

Antwort

1
DECLARE @ReferenceIdCount INT 

SELECT @ReferenceIdCount = COUNT(*) 
FROM 
    (
     SELECT 
      ReferenceId 
      ,COUNT(DISTINCT CustomerId) as ReferenceCount 
     FROM 
      @Table 
     GROUP BY 
      ReferenceId 
     HAVING 
      COUNT(DISTINCT CustomerId) > 1 
    ) t 

Zuerst müssen Sie die ReferenceId finden, die mehrere CustomerIds haben, dann müssen Sie sie zählen. Sie können dies auf viele Arten tun, aber die geschachtelte Auswahl ist eine einfache Möglichkeit, Sie zu zeigen.

+0

Sie Matt danken. Es klappt !!! – Anson

+0

froh, hier, bitte akzeptieren Sie die Antwort, wenn es für Sie funktioniert. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Matt

+0

Kann ich diese Nummer als Variable festlegen? – Anson

0

Kann ich diese Nummer als Variable festlegen?

Deklarieren @RFCount

set @RFCount = (

SELECT COUNT (*) FROM ( SELECT referenceId , COUNT (DISTINCT CustomerId) als ReferenceCount FROM @Table GROUP BY ReferenceId HABEN COUNT (DISTINCT CustomerId)> 1 ) t)

Druck @FCount

I Fehlermeldung für die obige Aussage

Verwandte Themen