MSSQL - 根据另一个表列中的值连接表并返回用户

时间:2013-07-01 13:49:33

标签: sql-server join

可能是一个措辞严厉的问题,所以道歉。

我有3张桌子要加入。

我创建了一个SQLFiddle here

我想要的是将MAXLINEDISCOUNT表中的linkloadsprice_escalation_bands表中允许的折扣进行比较。

因此,在数据中,maxlinediscount为40必须match price_escalation_bands表格中customer_band相同的下一个最高折扣。

所以我希望结果匹配第1行,其中它是铜牌,折扣是45.如果我MAXLINEDISCOUNT大于45,那么转到下一个最高点,在这种情况下可能是50。

匹配时,返回fk_salesman_userid字段并将其与users表中的用户名相匹配。

显然,所有这些数据都是动态的,因此需要查看下一个最高的数据......

目前,它返回为空白,所以不要认为我的语法非常正确。

我的查询是:

select price_authorized,load_number,maxlinediscount,customer_band,[price_escalation_bands].fk_salesman_userid,Users.firstname firstname,totalcost,period,creditlimit,currentbalance,customername,totalcubes,treatedcubes,normalcubes,pricingissue from #linkloads
left outer JOIN [price_escalation_bands] on [price_escalation_bands].band=#linkloads.customer_band
AND price_escalation_bands.discount = (
  SELECT top 1 [price_escalation_bands].[discount]
  FROM [price_escalation_bands]
  WHERE [price_escalation_bands].band=#linkloads.customer_band
  AND [price_escalation_bands].[discount]<=#linkloads.maxlinediscount
  ORDER BY [price_escalation_bands].[discount]
)
left outer join Users 
on Users.userid=[price_escalation_bands].fk_salesman_userid

帮助,一如既往地赞赏。

1 个答案:

答案 0 :(得分:1)

这列出了price_escalation_bands中匹配限制的所有linkloads个条目:

select  u.username
,       peb.band
,       peb.discount
,       ll.maxlinediscount
from    price_escalation_bands peb
join    Users u
on      peb.fk_salesman_userid = u.UserID
join    linkloads ll
on      ll.customer_band = peb.band
where   ll.maxlinediscount < peb.discount

Your SQL Fiddle example with this query.