我在SQL服务器中触发了以下查询,但它失败并显示错误
"没有为列"指定列名。
我不想提供别名,因为传递给查询的默认值非常大,给每一个都很费时间。
SQL Server中是否有办法在没有别名的情况下触发查询?
下面的查询仍在继续添加其他联合子句,粘贴查询只是其中的一部分。
我不想创建脚本,想以查询的形式实现这一点。
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
由于
答案 0 :(得分:2)
您可以将该查询简化为单个语句,并删除所有那些无意义的标量值。
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
答案 1 :(得分:1)
您可以删除所有这些列,因为它们不添加任何内容。在没有它们的情况下,查询在功能上与所有返回常量值相同,因此唯一必须使用的是前两列(具有名称)并且您将它们全部丢弃在外部查询(SELECT COUNT(*)
部分)无论如何。
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