sql - 内部连接到 select 语句,其中内部 select 语句的 where 子句引用外部 select?

标签 sql sql-server sql-server-2008 sql-server-2008-r2

这是我更大问题的精简查询,但要点是我试图内部联接到一个选择,其中选择受到外部选择的限制。那可能吗?我在内部选择上收到有关多部分标识符 S.Item 和 S.SerialNum 的错误。

要点是这样的,我们必须按项目/序列进行分组,并且查询足够大,我们不想返回并针对这个次要联接对整个查询中的所有内容进行分组。

SELECT S.Item, S.SerialNum, S.ReceiveDate
    FROM SALES S
    INNER JOIN (SELECT W.Item, W.SerialNum, MIN(W.SalesDate)
                    FROM WARRANTY W
                    WHERE W.Item        = S.Item    AND
                          W.SerialNum   = S.SerialNum
                    GROUP BY Item, SerialNum, SalesDate) WW
        ON S.Item = WW.Item AND WW.SerialNum

最佳答案

您的 JOIN 引用似乎位于错误的位置。

SELECT S.Item, S.SerialNum, S.ReceiveDate
FROM SALES S
INNER JOIN 
(
    SELECT W.Item, W.SerialNum, MIN(W.SalesDate) MinSalesDate
    FROM WARRANTY W
    GROUP BY Item, SerialNum
) WW
        ON S.Item = WW.Item 
       AND S.SerialNum = WW.SerialNum

编辑,根据您对过滤的评论,您可以在内部 SELECT 上放置一个 WHERE 子句:

SELECT S.Item, S.SerialNum, S.ReceiveDate, WW.MinSalesDate
FROM SALES S
INNER JOIN 
(
    SELECT W.Item, W.SerialNum, MIN(W.SalesDate) MinSalesDate
    FROM WARRANTY W
    WHERE yourFilter here
    GROUP BY Item, SerialNum
) WW
        ON S.Item = WW.Item 
       AND S.SerialNum = WW.SerialNum

关于sql - 内部连接到 select 语句,其中内部 select 语句的 where 子句引用外部 select?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077145/

相关文章:

sql-server - 在 SSIS 上配置 MDX 查询

SQL 查询查找数据库中具有特定名称列的所有表

debugging - 是否可以通过调试器检查表值参数的内容?

sql - 显示两个不同表中的所有列

mysql - ibatis中如何组合sql语句?

sql - 如何根据名字和出生日期选择名字日?

mysql - SQL删除以公共(public)前缀开头的表

sql - 构建不包含基于层次结构的数据的 SQL 查询

sql - SQL Server 中 DATE 类型的问题

mysql - 在插入时创建 MySQL 触发器