0

可能是一个措辞不好的问题,所以很抱歉。

我有 3 张桌子要连接在一起。

我在这里创建了一个 SQLFiddle

我想要的是将表格中的折扣MAXLINEDISCOUNT与表格linkloads中允许的折扣进行比较price_escalation_bands

所以在数据中,maxlinediscount 40 必须是表中相同match的下一个最高折扣。price_escalation_bandscustomer_band

所以我希望结果匹配第 1 行,它是青铜,折扣是 45。如果我MAXLINEDISCOUNT大于 45,然后转到下一个最高值,在这种情况下可能是 50。

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

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

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

我的查询是:

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

帮助,一如既往的感激。

4

1 回答 1

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

您使用此查询的 SQL Fiddle 示例。

于 2013-07-01T13:57:48.997 回答