0

コンピュータの使用年数を示すレポートを作成しようとしています。

SELECT 
M.NAME AS MACHINE_NAME, 
M.CS_MODEL AS MODEL, 
DA.SERVICE_TAG, 
DA.SHIP_DATE,
M.USER_LOGGED AS LAST_LOGGED_IN_USER, 
DW.SERVICE_LEVEL_CODE, 
DW.SERVICE_LEVEL_DESCRIPTION, 
DW.END_DATE AS EXPIRATION_DATE 
FROM MACHINE M 
JOIN DELL_ASSET DA ON (M.BIOS_SERIAL_NUMBER = DA.PARENT_SERVICE_TAG OR M.BIOS_SERIAL_NUMBER = DA.SERVICE_TAG) 
JOIN (SELECT SERVICE_TAG, SERVICE_LEVEL_CODE, SERVICE_LEVEL_DESCRIPTION, MAX(END_DATE) from DELL_WARRANTY group by SERVICE_TAG, SERVICE_LEVEL_CODE, SERVICE_LEVEL_DESCRIPTION) DW ON DW.SERVICE_TAG = DA.SERVICE_TAG 
WHERE M.CS_MANUFACTURER LIKE '%dell%' 
AND M.BIOS_SERIAL_NUMBER!='' 
AND DA.DISABLED != 1 
AND DW.END_DATE < NOW()
AND DW.SERVICE_TAG IS NULL
;

上記のコードでは、このエラーが発生します。私は何を間違っていますか?

引用符

エラー コード: 1054。「フィールド リスト」の不明な列「DW.END_DATE」

4

2 に答える 2

1

あなたが使用する必要があります

MAX(END_DATE) as END_DATE

あなたがそれを定義するとき

于 2013-08-27T14:57:14.477 に答える
0

MAX(END_DATE)計算フィールドのサブクエリにエイリアスを追加する必要があります。

JOIN (SELECT    SERVICE_TAG
                , SERVICE_LEVEL_CODE
                , SERVICE_LEVEL_DESCRIPTION
                , MAX(END_DATE) AS END_DATE
        from    DELL_WARRANTY 
        group by
                SERVICE_TAG
                , SERVICE_LEVEL_CODE
                , SERVICE_LEVEL_DESCRIPTION) DW 
ON  DW.SERVICE_TAG = DA.SERVICE_TAG 
于 2013-08-27T14:58:00.980 に答える