Abfrage ohne Aliasnamen in SQL server verwenden

Ich schaffe die untere Abfrage in SQL-server, aber es scheitert mit dem Fehler

"Spaltenname wurde für Spalte angegeben".

Ich möchte nicht den Alias-Namen geben, da die Standardwerte an die Abfrage übergeben sind riesig geben jedem einzelnen von ihnen ist zeitaufwendig.

Gibt es einen path in SQL server, um die Abfrage ohne Alias-Namen zu löschen?

Die untere Abfrage geht immer noch mit anderen Gewerkschaftsklauseln weiter, fügte die Abfrage nur einen Teil davon ein.

Ich möchte kein Skript erstellen, das in der Form der Abfrage erreichen will.

select count(*) from (select distinct a.Company, a.BilltoCustomerNo, 0, 'No Customer', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 0, 0, 'n/a', 'n/a', 'n/a', 0, 0, 'n/a', 'n/a', 0, 0, 'n/a', 'n/a', 'n/a', 0, 0, 'n/a', convert(datetime, '19000101', 112), 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 0, 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 'n/a', 'n/a', convert(datetime, '19000101', 112), 'n/a', convert(datetime, '19000101', 112), 0, 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 'n/a', 0, 'n/a', 0, 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 0, 'n/a', 'n/a', 0, 'n/a', 'n/a', 'n/a', 'n/a', 0, 0, 0, 0, 0, 0, 0, 0, 0, 'na', 'na' from dJob a left outer join dCustomer b on a.Company = b.Company and a.BilltoCustomerNo = b.No where b.Company is null) x 

Vielen Dank

Sie könnten diese Abfrage zu einer einzigen statement vereinfachen und alle jene sinnlosen Skalarwerte loswerden.

 select count(*) from dJob a left outer join dCustomer b on a.Company = b.Company and a.BilltoCustomerNo = b.No where b.Company is null group by a.Company, a.BilltoCustomerNo 

Du könntest alle diese Spalten fallen lassen, da sie nichts hinzufügen. Die Abfrage wird funktional gleich ohne sie sein wie die alle zurückkehrenden konstanten Werte, also das einzige, was der Unterschied zu arbeiten hat, ist die ersten beiden Spalten (die einen Namen haben) und du wirfst sie alle weg in die äußere Abfrage ( Der SELECT COUNT(*) Teil) sowieso.

 select count(*) from (select distinct a.Company, a.BilltoCustomerNo from dJob a left outer join dCustomer b on a.Company = b.Company and a.BilltoCustomerNo = b.No where b.Company is null) x