2017-05-12 8 views
0

Wie würde ich die folgenden Tabellen beitreten, um eine Gesamtanzahl von allen Tabellen zu erhalten.Tabellen und Summen beitreten

select (BatchIdentifier), 
     Count(distinct BatchIdentifier) as ERTBatchCheckIdentifier 
from ERTBatchChecks 
Group By BatchIdentifier 

select (ERTBatchNumber), 
     Count(distinct ERTBatchNumber) as ERTBatchNumber 
from ERTClaims 
Group By ERTBatchNumber 

select (BatchIdentifier), 
     Count(distinct BatchIdentifier) as ERTBatchesIdentifier 
from ERTBatches 
Group By BatchIdentifier 
+0

Gesamtanzahl von was? Alle Datensätze oder Gruppen oder ...? Haben BatchIdentifier und ERTBatchNumber in Tabellen die gleichen Werte, so dass die Gruppierung tabellenübergreifend sein sollte? Können Sie einige Beispieldaten und das erwartete Ergebnis veröffentlichen? –

Antwort

0

Wenn Sie wollen einfach ein SUM() dann eine abgeleitete Tabelle verwenden und union all:

SELECT Batch, SUM(Cnt) AS TotalCount 
FROM (

    select (BatchIdentifier) AS Batch, 
      Count(distinct BatchIdentifier) as Cnt 
    from ERTBatchChecks 
    Group By BatchIdentifier 

    union all 

    select (ERTBatchNumber), 
      Count(distinct ERTBatchNumber) 
    from ERTClaims 
    Group By ERTBatchNumber 

    union all 

    select (BatchIdentifier), 
      Count(distinct BatchIdentifier) 
    from ERTBatches 
    Group By BatchIdentifier 

    ) SubCounts 
GROUP BY Batch 

Wenn Sie eine Gesamtanzahl der verschiedenen ‚partienweise‘ wollen, dann verwenden Vereinigung und COUNT():

SELECT Count(Batch) AS TotalDistinctBatches 
FROM (

    select distinct BatchIdentifier as Batch 
    from ERTBatchChecks 

    union 

    select distinct ERTBatchNumber 
    from ERTClaims 

    union 

    select distinct BatchIdentifier 
    from ERTBatches 

    ) DistinctBatches 

Hinweis: Union all wird Duplikate halten, Union wird nicht. Daher möchten wir für das Hinzufügen der Zählungen Union all verwenden, falls zwei der Zählungen gleich sind. Aber zum Zählen der verschiedenen Chargen wollen wir Union, also zählen wir nicht die gleiche Charge mehr als einmal.

+0

Das sind großartig, aber das ist was ich brauche. 999 (3) 666 (3) 123 (2). Also wäre es die Summe jedes Bezeichners in der gesamten Spalte einschließlich des Bezeichners in den Ergebnissen –

+0

@JohnMolina Die erste Abfrage sollte schließen, ich hatte versehentlich den 'BatchIdentifier' weggelassen. Was ich 'Batch' genannt habe, ist einfach. –