SELECT DISTINCT
W.AVG_WGHT
FROM
***[LOT] L***
INNER JOIN [DBO].[OWNR_MKUP] MK ON L.[OWNR_INFO_ID= MK.[OWNR_ID]
,(SELECT [AVG_WGHT]
FROM [DBO].[DLY_LOT_SUM] DLS
INNER JOIN [DBO].[LOT] L ON DLS.[LOT_ID] = L.[LOT_ID]
WHERE DLS.[COST_DTE] = (SELECT MAX(DTE) FROM [DBO].[DLY_HEAD_CNT] WHERE [LOT_ID] = L.[LOT_ID] AND [CUR_HEAD_CNT] > 0 AND [DTE] <= @COST_DTE
) W
在内部SELECT语句中,我再次在LOT L上使用了内连接,但我不想这样做,我想使用之前声明的LOT L,但SQL不允许它使用。
由于LOT L上的内连接再一次得到多个记录,我不想在上面的SELECT DISTINCT中使用这个内部SELECT语句
答案 0 :(得分:1)
您正在使用显式连接语法和隐式(逗号分隔)连接语法。当您无条件地隐式加入子查询时,您将获得一个笛卡尔积。在92中的ANSI-SQL中,逗号分隔的连接已被显式连接语法所取代,不鼓励使用逗号分隔的连接。
您可能需要的是:
SELECT DISTINCT
DLS.AVG_WGHT
FROM [LOT] L
INNER JOIN [DBO].[OWNR_MKUP] MK
ON L.[OWNR_INFO_ID= MK.[OWNR_ID]
INNER JOIN [DBO].[DLY_LOT_SUM] DLS
ON DLS.[LOT_ID] = L.[LOT_ID]
--WHERE DLS.[COST_DTE] = [DBO].[DLY_HEAD_CNT] I don't understand this line, what is `[DBO]`?