如何在具有不同别名的同一表的多个左联接中选择相同的表字段

时间:2019-09-11 07:57:35

标签: sql-server

衷心感谢您在这里分享我的问题以及任何帮助。

我有一个名为“需求集”的表。该表确实有两列,我必须使用的是“ DSTSiteLocationID”和“ DSTTer​​mSiteLocationID”。还有另一个称为DemandSet_ADDRESS_Mapping的表,该表具有称为DAMapID的列。我在DemandSet_ADDRESS_Mapping上进行两次左连接,一次用于DSTSiteLocationID(别名DSAM1),另一次用于DSTTer​​mSiteLocationID(别名DSAM2),具有表Demandset。现在,表DemandSet_ADDRESS_Mapping具有在我的select语句中选择的DAStreet,DACity,DAState,DAZip列。但是,我用别名DSAM1和DSAM2选择了两次,因为当与DSTSiteLocationID和DSTTer​​mSiteLocationID结合使用时,它将返回不同的数据。以及共享代码。

select 
DSAM1.DAStreet 
,DSAM1.DACity 
,DSAM1.DAState 
,DSAM1.DAZip 
,DSAM2.DAStreet 
,DSAM2.DACity 
,DSAM2.DAState 
,DSAM2.DAZip 

FROM   [dbo].[bma30_demandset] BDS (nolock) 

               LEFT JOIN BMA30_DemandSet_ADDRESS_Mapping DSAM1 (NOLOCK) ON ISNULL(DSAM1.DAMapID,'') = ISNULL(BDS.DSTSiteLocationID,'') 
               LEFT JOIN BMA30_DemandSet_ADDRESS_Mapping DSAM2 (NOLOCK) ON ISNULL(DSAM2.DAMapID,'') = ISNULL(BDS.DSTTermSiteLocationID,'')

我收到所有字段的以下错误消息。 消息8156,级别16,状态1,过程BMA30_FN_DemandSet_CHART_PIVOT_Insert,第146行 多次为“ A”指定了“ DAStreet”列。

根据错误消息,即使我使用了两个不同的别名,也不允许我两次使用该列。

1 个答案:

答案 0 :(得分:0)

在选择时,您必须为列名使用别名

x