2013-08-30 36 views
0

我想使用兩個表的連接從數據表中選擇不同的GTIM列值。 這裏是我的查詢..如何在連接查詢中選擇不同的列

SELECT TOP (9) Tracking.LAMI, 
    Tracking.LGMI, 
    Tracking.SPED, 
    Tracking.BAT_ADC, 
    Tracking.GTIM, 
    Tracking.MAIN_BACKUP, 
    Tracking.PULSE_CTR, 
    Tracking.NOST, 
    Tracking.IGST, 
    Tracking.COND_INPUTS, 
    Tracking.FUEL_ADC, 
    Tracking.M, 
    Vehicles_Device_Rel.VehicalNumber 
FROM Tracking 
INNER JOIN Vehicles_Device_Rel 
    ON Tracking.M = Vehicles_Device_Rel.Device_ID 
WHERE (Vehicles_Device_Rel.VehicalNumber = 'test') 
ORDER BY GTIM DESC 

輸出示例:

12.988000 77.68367400 6 543 2013-08-30 17:26:00.000 1 0.00 10 1 99 10 10 test  
12.918800 77.65367400 6 543 2013-08-30 17:25:00.000 1 0.00 10 1 99 10 10 test 
12.968800 77.65367400 4 543 2013-08-30 17:25:00.000 1 0.00 10 1 99 10 10 test  
12.891880 77.65367400 6 543 2013-08-30 17:24:00.000 1 0.00 10 1 99 10 10 test 
+0

'DISTINCT'用於select子句中的所有列,這意味着所有組合的列將用於獲取不同的行。 'TOP X'只會選擇'X'中提到的行數。 – Nilesh

回答

0

這將選擇不同的值。這是你想要的嗎?

SELECT distinct Tracking.GTIM 
FROM Tracking 
INNER JOIN Vehicles_Device_Rel 
    ON Tracking.M = Vehicles_Device_Rel.Device_ID 
WHERE (Vehicles_Device_Rel.VehicalNumber = 'test') 
0

您可以加入您當前的查詢與SELECT DISTINCT GTIM FROM TRACKING

事情是這樣的:

SELECT TOP (9) Tracking.LAMI, 
    Tracking.LGMI, 
    Tracking.SPED, 
    Tracking.BAT_ADC, 
    Tracking.GTIM, 
    Tracking.MAIN_BACKUP, 
    Tracking.PULSE_CTR, 
    Tracking.NOST, 
    Tracking.IGST, 
    Tracking.COND_INPUTS, 
    Tracking.FUEL_ADC, 
    Tracking.M, 
    Vehicles_Device_Rel.VehicalNumber 
FROM Tracking 
INNER JOIN Vehicles_Device_Rel 
    ON Tracking.M = Vehicles_Device_Rel.Device_ID 
INNER JOIN (SELECT DISTINCT GTIM FROM TRACKING) T ON T.GTIM = Tracking.GTIM 
WHERE (Vehicles_Device_Rel.VehicalNumber = 'test') 
ORDER BY Tracking.GTIM DESC 

我想這是你正在尋找的查詢。

+0

嗨Radu gheorghiu,當我執行上述修改查詢再次我得到重複的GTIM值.. –

+0

@ Gajulapalle.rajesh您可能有重複,但這是因爲你可能有記錄在不同的車輛同時登錄(相同GTIM,我假設GTIM包含時間值,如果不是,請糾正我)。 –

+0

@ Gajulapalle.rajesh另外,運行查詢後的一些示例數據將非常有用。 –

0
; WITH cte AS 
    (SELECT 
     Tracking.LAMI, 
     Tracking.LGMI, 
     Tracking.SPED, 
     Tracking.BAT_ADC, 
     Tracking.GTIM, 
     Tracking.MAIN_BACKUP, 
     Tracking.PULSE_CTR, 
     Tracking.NOST, 
     Tracking.IGST, 
     Tracking.COND_INPUTS, 
     Tracking.FUEL_ADC, 
     Tracking.M, 
     Vehicles_Device_Rel.VehicalNumber, 
     RowN = ROW_NUMBER() OVER (PARTITION BY Tracking.GTIM 
           ORDER BY SomeColumn)   -- your choice 
    FROM Tracking 
    INNER JOIN Vehicles_Device_Rel 
     ON Tracking.M = Vehicles_Device_Rel.Device_ID 
    WHERE (Vehicles_Device_Rel.VehicalNumber = 'test') 
) 
SELECT TOP (9) * 
FROM cte 
WHERE RowN = 1 
ORDER BY GTIM DESC ; 
+0

謝謝....這是工作... –