在SQL Server中不使用别名进行查询

时间:2016-11-29 17:04:53

标签: sql-server

我在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

由于

2 个答案:

答案 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