从子查询中删除重复的列名称,并仅获取选择的列

时间:2018-07-30 06:04:15

标签: sql sql-server join left-join

我有以下MSSQL查询:

select
    innerqueryresult.intDoorID as DoorID,
    innerqueryresult.vchrDoorName as DoorName,
    innerqueryresult.vchrAddress as Address,
    innerqueryresult.vchrDoor as Door,
    innerqueryresult.dtmStartDate as StartDate
from
(
    Select Distinct *
    FROM ADoor dr
    left join APositionAssign pos
        on pos.intOrgLevelID = dr.intOrgLevelID
    left join APositions p
        on p.intPositionID = pos.intPositionID
    left join APositionAssign posAssign
        on posAssign.vchrDoor = dr.vchrDoor or posAssign.intOrgLevelID = dr.intOrgLevelID
    Where dr.vchrDoor = '0000140'
) innerqueryresult

执行上述查询时,它返回:

  

消息8156,级别16,状态1,第1行第vcvcDoor列为   为“ innerqueryresult”指定了多次。

尽管内部查询是通过程序动态生成的,但是我无法从查询中获取正确的别名。有什么方法可以在不了解别名的情况下运行查询。 谁能给我建议解决方案。

1 个答案:

答案 0 :(得分:-1)

其他人发表评论(不知道为什么):请勿使用SELECT * 这总是一件微妙的事情,因为如果添加任何列,您的应用程序可能会损坏。