Ale*_*tny 9 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
Run Code Online (Sandbox Code Playgroud)
Tar*_*ryn 16
看起来你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
Run Code Online (Sandbox Code Playgroud)
编辑,根据您对过滤的评论,您可以WHERE
在内部放置一个子句SELECT
:
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
Run Code Online (Sandbox Code Playgroud)