SQL Server 在FROM子句中多次指定了相关名'MR

mlnl4t2r  于 2023-01-04  发布在  其他
关注(0)|答案(4)|浏览(173)
Create PROCEDURE [dbo].[K_RT_FixedAsset]
@fromdate datetime,
@todate datetime
AS
BEGIN

SET NOCOUNT ON;

 select convert(varchar,FT.date,103)as date, MR.branch as frombranch,PD.productname as product,FT.vehicleno,FT.dcno,FT.tobranch 
from K_RT_FixedAssetTransfer FT
inner join K_RT_MasterRetailStores MR on MR.sno = FT.frombranch 
inner join K_RT_ProductDetails PD on PD.sno=FT.product
inner join K_RT_MasterRetailStores MR on MR.sno = FT.tobranch 
where FT.date between @fromdate and  @todate

END
pb3s4cty

pb3s4cty1#

必须为K_RT_MasterRetailStores的每个联接使用不同的别名。

agyaoht7

agyaoht72#

其他人说要用不同的别名,但也许你不清楚他们的意思:

select convert(varchar,FT.date,103)as date, MR_from.branch as frombranch,
        PD.productname as product,FT.vehicleno,FT.dcno,FT.tobranch 
from K_RT_FixedAssetTransfer FT
inner join K_RT_MasterRetailStores MR_from --<-- First alias
           on MR_from.sno = FT.frombranch 
inner join K_RT_ProductDetails PD on PD.sno=FT.product
inner join K_RT_MasterRetailStores MR_to --<-- Second alias
           on MR_to.sno = FT.tobranch 
where FT.date between @fromdate and  @todate

我注意到您没有使用SELECT列表中第二个连接的任何内容,也许您想使用它来代替FT.tobranch

select convert(varchar,FT.date,103)as date, MR_from.branch as frombranch,
        PD.productname as product,FT.vehicleno,FT.dcno,MR_to.branch 
from K_RT_FixedAssetTransfer FT
inner join K_RT_MasterRetailStores MR_from on MR_from.sno = FT.frombranch 
inner join K_RT_ProductDetails PD on PD.sno=FT.product
inner join K_RT_MasterRetailStores MR_to on MR_to.sno = FT.tobranch 
where FT.date between @fromdate and  @todate
nimxete2

nimxete23#

您已使用同一别名在上两次加入K_RT_MasterRetailStores。
根据此连接是否需要插入两次,您需要

  • 删除第二个连接
  • 使用其他别名
hvvq6cgz

hvvq6cgz4#

--Rename the alias names

inner join K_RT_MasterRetailStores MR1 on MR1.sno = FT.frombranch

inner join K_RT_MasterRetailStores MR2 on MR2.sno = FT.tobranch

相关问题