Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Access 2010缩小查询结果更新_Sql_Ms Access - Fatal编程技术网

Sql Access 2010缩小查询结果更新

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

我有一个大表(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      |
| 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-我没有完全正确地引用这句话。尝试添加我的表,但格式设置完全错误。