Sql server T-SQL:查询返回的列太多
我遇到一个查询,它似乎返回了太多的列是的,是列,不是行。声明如下Sql server T-SQL:查询返回的列太多,sql-server,tsql,ansi-sql,Sql Server,Tsql,Ansi Sql,我遇到一个查询,它似乎返回了太多的列是的,是列,不是行。声明如下 Select TOP 10 PERCENT TempLegs.*, TMWStateMilesByLeg.* From ( Select TOP 10 TempOrigin.stp_city as 'Origin Location' from stops TempOrigin (NOLOCK) Union Select TOP 10
Select TOP 10 PERCENT
TempLegs.*,
TMWStateMilesByLeg.*
From
(
Select TOP 10
TempOrigin.stp_city as 'Origin Location'
from stops TempOrigin (NOLOCK)
Union
Select TOP 10
TempOrigin2.stp_city as 'Origin Location'
from stops TempOrigin2 (NOLOCK)
) As TempLegs,TMWStateMilesByLeg
运行此语句时,结果集不是“Origin Location”的单个列,而是列出stops表中的所有列。这是怎么回事
我唯一能想到的是
作为模板,TMWStateMilesByLeg
语句对连接的两个部分都使用了别名,但我不确定,因为我从未在as语句中看到过两个术语
非常感谢您的帮助。这是一种老式的加入方式
Select TOP 10 PERCENT /* <-- top without order by */
TempLegs.*
--,TMWStateMilesByLeg.*
From (
Select TOP 10 /* <-- top without order by */
TempOrigin.stp_city as 'Origin Location'
from stops TempOrigin --(NOLOCK)
Union /* <-- union instead of union all will return distinct results */
Select TOP 10 /* <-- top without order by */
TempOrigin2.stp_city as 'Origin Location'
from stops TempOrigin2 --(NOLOCK)
) As TempLegs --,TMWStateMilesByLeg
参考:
天哪谢谢你,我永远也想不到。顺便说一句,我并没有编写这个SQL,我只是在尝试协调来自另一个系统的数字时偶然发现了它。是的,诺洛克无处不在@FlexFiend很乐意帮忙!您正在使用的点星*符号告诉T-SQL显示给定表的所有列。因此TempLegs.*将为您提供所需的单个列,但TMWStateMilesByLeg.*也将为您提供该表中的每一列,我不知道它是什么,也不知道它如何影响您的查询。