2016-03-20 9 views
0

Ich habe einen SQL-Befehl mit mehreren Tabellen mit LEFT JOIN table1 AS alias hinzugefügt. Ich möchte alle Zeilen in table1, aber nicht table2 zählen.Wie zu zählen (*) für bestimmte Alias ​​in SQL Server?

In einem Befehl, wo es nur eine Tabelle gibt, kann ich einfach count(*) tun. Hier bezieht sich * jedoch auf alle Zeilen in allen verknüpften Tabellen. table1.* ruft alle Zeilen nur aus dieser Tabelle ab, aber count(table1.*) löst einen Incorrect syntax near '*'. Fehler aus.

Ist das ein Syntaxproblem oder etwas tiefer? Wie bekomme ich die gewünschte Funktionalität?

Ausführen von Microsoft SQL Azure (RTM) - 12.0.2000.8

+0

sollte nur einfach sein können COUNT (*) ' – Squirrel

+1

Warum zählen Sie die Zeilen von Tabelle1 nicht nach einem Spaltennamen wie' COUNT (table1.columFromTable1) '? – KarelG

+0

Es wäre hilfreich, wenn Sie Ihre Anfrage auch präsentieren könnten. – xpy

Antwort

0

Statt Abfrage wie diese

select *,count(C.CustomerID) over (partition by U.UserID) 
from Users U 
left join Customers C on C.ManagerID = U.UserID 
where U.UserID between 1574 and 1580 

Sie Abfrage wie diese

select * 
from Users U 
outer apply (
     select Cnt = count(*) from Customers 
     where ManagerID = U.UserID) res 
where U.UserID between 1574 and 1580