2016-07-20 8 views
1

Ich habe zwei Tabellen im SQL Server. Das erste ist eine Tabelle von Kundeninformationen und das zweite schließt alle Einkäufe ein. Am ersten Tisch habe ich die ID unserer Kunden, und die Tabelle der Einkäufe hat die ID, wer dieses Produkt gekauft hat. Also, wie kann ich alle Kunden Tabelle auswählen, die enthalten, wie viel Zeit sie Produkte gekauft haben? Ich habe versucht, dieseAnzahl der vorhandenen Zeilen in einer anderen Tabelle auswählen und mit unserer SQL Server-Tabelle verbinden

SELECT TOP 2000 COUNT(tblpurchase.id) as id2,tblcustomers.* From tblpurchase 
right join on tblpurchase.id=tblcustomers.id 

aber nicht Wort. Wie kann ich das lösen?

Antwort

1

Verwendung OUTER APPLY

SELECT TOP 2000 tblcustomers.* ,M.CustomerCount 
From tblcustomers 
OUTER APPLY(
SELECT COUNT(*) as CustomerCount 
from tblpurchase 
WHERE tblpurchase.CustomerIDColumn = tblcustomers.id 
)M 

Hier tblpurchase.CustomerIDColumn Verwendung tatsächliche Name customerID Spalte

0

Sie können auch mit LEFT JOIN

SELECT TOP 2000 
    C.*, 
    P.CustomerCount 
From 
    tblcustomers C LEFT JOIN 
    (
     SELECT 
      TP.CustomerId, 
      COUNT(*) as CustomerCount 
     FROM 
      tblpurchase TP 
     GROUP BY 
      TP.CustomerId 
    ) P ON C.Id = P.CustomerId 
Verwandte Themen