Sql 在连接两个表时选择列
我想从表1和表2中选择列,但无法选择它们: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
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名。