Sql 在连接两个表时选择列

Sql 在连接两个表时选择列,sql,sql-server,Sql,Sql Server,我想从表1和表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.COMPA

我想从表1和表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 
我想选择表1和表2列我将如何做??因为我试过

table1.VEHICLE_ID_FW
table1.ALLOCATIONS_FW.VEHICLE_ID_FW

两者都不起作用

试着这样做,您不应该在子查询中使用order by子句。我刚才评论道。请试试这个

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

1.你说它不起作用是什么意思?2.您的查询中没有表2,第二个派生表的别名是oldalloc。您的第二个派生表别名不是
table2
,而是
oldalloc
,可能这就是我上面选择的问题。。。我必须从表1中获取值。当我尝试使用SELECT table1时。table1中的列没有出现多部分标识符问题…你能试着给它们一个别名吗。例如:从(选择前1名分配\u FW.VEHICLE\u ID\u FW作为VEHICLE\u ID\u FW,请尝试此操作并让我知道您的结果。我无法理解您为什么使用前1名。