2016-02-23 65 views
0

我想選擇表1和表2列,但我不能選擇他們選擇列:上加入2個表

SELECT table1._____ 
    ,table2.____ 
    FROM 
    (
    SELECT TOP 1 ALLOCATIONS_FW.VEHICLE_ID_FW 
    ,ALLOCATIONS_FW.END_DATE_FW 
    ,ALLOCATIONS_FW.START_DATE_FW 
    ,ALLOCATIONS_FW.LOCATION_CODE_FW 
    ,ALLOCATIONS_FW.COMPANY_CODE_FW 
    ,ALLOCATIONS_FW.VEHICLE_RECORD_NUMBER_FW 
    FROM ALLOCATIONS_FW 
    WHERE ALLOCATIONS_FW.START_DATE_FW = (SELECT MAX(ALLOCATIONS_FW.START_DATE_FW) 
      FROM ALLOCATIONS_FW 
      WHERE ALLOCATIONS_FW.VEHICLE_ID_FW IN 
        (SELECT VEHICLE_ID_FW FROM ALLOCATIONS_FW WHERE VEHICLE_ID_FW = ALLOCATIONS_FW.VEHICLE_ID_FW) 
      AND ALLOCATIONS_FW.RECORD_NUMBER_FW = %RECORD_NUMBER_FW% 
      ) 
    AND ALLOCATIONS_FW.RECORD_NUMBER_FW = %RECORD_NUMBER_FW% 
    ) AS table1 
    JOIN 
    (
    SELECT TOP 1 ALLOCATIONS_FW.VEHICLE_ID_FW 
    ,ALLOCATIONS_FW.END_DATE_FW 
    ,ALLOCATIONS_FW.START_DATE_FW 
    ,ALLOCATIONS_FW.LOCATION_CODE_FW 
    ,ALLOCATIONS_FW.COMPANY_CODE_FW 
    ,ALLOCATIONS_FW.DRIVER_NAME_FW 
    FROM ALLOCATIONS_FW 
    WHERE VEHICLE_ID_FW=(SELECT VEHICLE_ID_FW FROM ALLOCATIONS_FW 
          WHERE ALLOCATIONS_FW.RECORD_NUMBER_FW = %RECORD_NUMBER_FW%) 
    AND END_DATE_FW = (SELECT MAX(ALLOCATIONS_FW.END_DATE_FW) 
      FROM ALLOCATIONS_FW 
      WHERE VEHICLE_ID_FW=ALLOCATIONS_FW.VEHICLE_ID_FW) 

    ORDER BY ALLOCATIONS_FW.START_DATE_FW DESC 
    ) AS OLDALLOC 
    ON table1.column1=table2.column1 

我想選擇Table 1和表2列,我會怎麼做?因爲我試過

table1.VEHICLE_ID_FW 
table1.ALLOCATIONS_FW.VEHICLE_ID_FW 

既沒有工作

+0

1.你是什麼意思,它不工作? 2.您的查詢中沒有table2,第二個派生表的別名是oldalloc。 – Shadow

+0

你的第二個派生表別名不是'table2',它是'OLDALLOC'也許這就是我上面選擇的問題 –

+0

...我必須從table1中獲取值。當我嘗試使用SELECT table1._____時,表1中的列未出現 – pretzels04

回答

0

試試這個樣子,你不應該被子句的子查詢中使用的順序。我剛剛評論。請試試這個。

SELECT * 
FROM (
    SELECT TOP 1 ALLOCATIONS_FW.VEHICLE_ID_FW 
     ,ALLOCATIONS_FW.END_DATE_FW 
     ,ALLOCATIONS_FW.START_DATE_FW 
     ,ALLOCATIONS_FW.LOCATION_CODE_FW 
     ,ALLOCATIONS_FW.COMPANY_CODE_FW 
     ,ALLOCATIONS_FW.VEHICLE_RECORD_NUMBER_FW 
    FROM ALLOCATIONS_FW 
    WHERE ALLOCATIONS_FW.START_DATE_FW = (
      SELECT MAX(ALLOCATIONS_FW.START_DATE_FW) 
      FROM ALLOCATIONS_FW 
      WHERE ALLOCATIONS_FW.VEHICLE_ID_FW IN (
        SELECT VEHICLE_ID_FW 
        FROM ALLOCATIONS_FW 
        WHERE VEHICLE_ID_FW = ALLOCATIONS_FW.VEHICLE_ID_FW 
        ) 
       AND ALLOCATIONS_FW.RECORD_NUMBER_FW = % RECORD_NUMBER_FW % 
      ) 
     AND ALLOCATIONS_FW.RECORD_NUMBER_FW = % RECORD_NUMBER_FW % 
    ) AS table1 
INNER JOIN (
    SELECT TOP 1 ALLOCATIONS_FW.VEHICLE_ID_FW 
     ,ALLOCATIONS_FW.END_DATE_FW 
     ,ALLOCATIONS_FW.START_DATE_FW 
     ,ALLOCATIONS_FW.LOCATION_CODE_FW 
     ,ALLOCATIONS_FW.COMPANY_CODE_FW 
     ,ALLOCATIONS_FW.DRIVER_NAME_FW 
    FROM ALLOCATIONS_FW 
    WHERE VEHICLE_ID_FW = (
      SELECT VEHICLE_ID_FW 
      FROM ALLOCATIONS_FW 
      WHERE ALLOCATIONS_FW.RECORD_NUMBER_FW = % RECORD_NUMBER_FW % 
      ) 
     AND END_DATE_FW = (
      SELECT MAX(ALLOCATIONS_FW.END_DATE_FW) 
      FROM ALLOCATIONS_FW 
      WHERE VEHICLE_ID_FW = ALLOCATIONS_FW.VEHICLE_ID_FW 
      ) 
    --ORDER BY ALLOCATIONS_FW.START_DATE_FW DESC 
    ) AS OLDALLOC ON table1.column1 = table2.column1 
+0

請試試這個和讓我知道你的結果,我無法理解你爲什麼使用top 1。 – StackUser