Sql Access 2010缩小查询结果更新
我有一个大表(TBLRATE和TRANSIT,34K行),从中我只选择了大约8个字段Sql Access 2010缩小查询结果更新,sql,ms-access,Sql,Ms Access,我有一个大表(TBLRATE和TRANSIT,34K行),从中我只选择了大约8个字段 |SCAC|CarrierName|OriginCity|OState|DestCity|DState|Rate |LaneTier| |KNIG|Knight |York |PA |Canton |NJ |$2.99| 2 | |HJBB|JB Hunt |York |PA |Canton |NJ |$3.67| 2 | | C
|SCAC|CarrierName|OriginCity|OState|DestCity|DState|Rate |LaneTier|
|KNIG|Knight |York |PA |Canton |NJ |$2.99| 2 |
|HJBB|JB Hunt |York |PA |Canton |NJ |$3.67| 2 |
| Could be 4 more different Canton carriers carriers, diff rates..|
我还有一个表格(tblFromToCityState,可能有4个字段,100行),从一个excel文件中输入,该文件是一个链接,我需要从大表格中获取哪些城市的信息
|FCity |FState|DestCity|DState|
|York |PA |Canton |NJ |
还有一张小桌子,那是认可的承运人
|SCAC|Carrier Name|
|CLLQ|Coyote |
|HBG1|Hub Group |
|KNIG|Knight |
最终,我的查询询问从始发地城市/州到目的地城市/州,根据第一级批准的最佳承运人是什么,如果该航线没有第二级批准,那么最佳费率是什么
阶段2是,如果FROM城市为空,则使用FROM状态。或者,如果TO City为空,则使用TO状态
如果我做一个简单的FROM-TO-MIN(RATE)查询,效果非常好
SELECT RateandTransit.[Origin City],
RateandTransit.[Origin State],
RateandTransit.[Destination City],
RateandTransit.[Destination State],
Min(RateandTransit.Rate) AS MinOfRate,
RateandTransit.[Lane Tier]
FROM tblFromToCityState
INNER JOIN RateandTransit
ON (tblFromToCityState.TO = RateandTransit.[Destination City])
AND (tblFromToCityState.FROM = RateandTransit.[Origin City])
GROUP BY RateandTransit.[Origin City],
RateandTransit.[Origin State],
RateandTransit.[Destination City],
RateandTransit.[Destination State],
RateandTransit.[Lane Tier]
HAVING (((RateandTransit.[Lane Tier]) > 1))
ORDER BY RateandTransit.[Origin City] DESC,
RateandTransit.[Lane Tier];
|Origin City|State|Dest City |State|MinRate|LaneTier|
|York |PA |Burlington| NJ |$8.11 | 2 |
|York |PA |Canton | MA |$2.80 | 2 |
|etc...one line per destination city...
当我将承运商添加到查询中时,我可能会得到4到6条来自/到组合的记录,因为每个承运商都不同,所以分组方式不起作用。以伯灵顿为例,我只需要8.11美元的记录,这是最便宜的托运人,但我看到了所有的记录
SELECT RateandTransit.[Origin City],
RateandTransit.[Origin State],
RateandTransit.[Destination City],
RateandTransit.[Destination State],
RateandTransit.SCAC,
RateandTransit.[Carrier Legal Name],
Min(RateandTransit.Rate) AS MinOfRate,
RateandTransit.[Lane Tier]
FROM tblFromToCityState
INNER JOIN RateandTransit
ON (tblFromToCityState.TO = RateandTransit.[Destination City])
AND (tblFromToCityState.FROM = RateandTransit.[Origin City])
GROUP BY RateandTransit.[Origin City],
RateandTransit.[Origin State],
RateandTransit.[Destination City],
RateandTransit.[Destination State],
RateandTransit.SCAC,
RateandTransit.[Carrier Legal Name],
RateandTransit.[Lane Tier]
HAVING (((RateandTransit.[Lane Tier]) > 1))
ORDER BY RateandTransit.[Origin City] DESC,
RateandTransit.[Lane Tier];
|Origin City|State|Dest City |State|SCAC|Carrier |MinRate|LaneTier|
|York |PA |Burlington| NJ |MPLT|Paul Miller|$8.11 | 2 |
|York |PA |Burlington| NJ |XPOL|XPO Logics |$9.46 | 2 |
|York |PA |Burlington| NJ |HHWY|Hub Group |$9.60 | 2 |
|and so on...
我需要以某种方式进行过滤,这是从/到层的最便宜价格。本网站上的另一个问题回答了我的需要,讨论了零件号:
SELECT T1.*
FROM My_Table T1
INNER JOIN (
SELECT [Ven Part Num],
MIN(Price) AS MPrice
FROM My_Table
GROUP BY [Ven Part Num]
) T2
ON T1.[Ven Part Num] = T2.[Ven Part Num]
AND T1.Price = T2.MPrice
我只是不知道如何用我已经拥有的东西来实现这一点:
一周来,我一直在尝试使用多种可能性进行修复,比如在报告中使用我的查询,在报告中,我可以在MIN(RATE)
字段上执行MIN
,或者在另一个查询中使用MIN(RATE)
查询:
SELECT qryMinRateAll.[Origin City],
qryMinRateAll.[Origin State],
qryMinRateAll.[Destination City],
qryMinRateAll.[Destination State],
RateandTransit.SCAC,
qryMinRateAll.MinRate,
qryMinRateAll.[Lane Tier]
FROM qryMinRateAll
INNER JOIN RateandTransit
ON (qryMinRateAll.[Destination City] = RateandTransit.[Destination City])
AND (qryMinRateAll.[Origin City] = RateandTransit.[Origin City]);
都没有用。我需要帮助 我认为子查询听起来像是一种方式,但由于您所追求的内容听起来有点复杂,我认为您应该包括tblRateandTransit和tblFromToCityState的表结构和示例数据以及所需的输出(再次显示为数据表),以便为我们提供更直观的帮助起点。(我对你大写的词的意义也有点困惑。)嗨@MattHall-是的,我也这么认为。我只是用大写字母来解释我的文章,让它更简短。上面编辑…@MattHall我尝试输入我的表格/结果的图像,但由于我是新来的,所以受到限制。不知道如何将表/输出转换为此处所需的格式。我知道,这有点麻烦,不是吗?我发现显示表的最佳方法是使用stack overflow的代码工具键入它,即使用{}按钮。如果使用“代码”工具,则可以使用空格使所有内容保持对齐。我问了一个问题,我在哪里发布了一个示例表:@MattHall-我没有完全正确地引用这句话。尝试添加我的表,但格式设置完全错误。