2017-01-05 53 views
1

我現在有這個疑問選擇屬性應用於SQL

SELECT 
    OC.*, 
    NEW.LAST_JOB_RUN_DATE 
FROM dbo.CUBES OC 
CROSS APPLY (SELECT 
    MAX(LAST_END_RUN_DATE) AS LAST_JOB_RUN_DATE 
FROM dbo.JOBS OJ 
WHERE OJ.CUBE_ID = OC.ID) NEW 

每個CUBE可以有多個JOBS。我想要這個查詢返回所有的多維數據集,以及上次運行最新作業的時間。這工作正常。現在我也想添加該作業的STATUS,但我似乎無法使查詢工作。上面的查詢工作,但沒有返回與我相關的狀態,這是我想要的。
有沒有辦法改變上面的查詢,也返回STATUS作業包含MAX(LAST_END_RUN_DATE)

回答

2
SELECT 
    OC.*, 
    NEW.LAST_JOB_RUN_DATE, 
    NEW.STATUS 
FROM dbo.CUBES OC 
OUTER APPLY (SELECT TOP (1) OJ.LAST_END_RUN_DATE AS LAST_JOB_RUN_DATE, OJ.STATUS 
FROM dbo.JOBS OJ 
WHERE OJ.CUBE_ID = OC.ID 
ORDER BY OJ.LAST_END_RUN_DATE DESC) NEW 
+0

只是嘗試這樣做,它只返回我有工作的立方體,如果一個立方體有沒有工作這個查詢不會返回 – philr

+0

@thegiant再試一次。 – DVT

+0

它_almost_工作,我需要'MAX'替換'SELECT TOP(1)',但這是行不通的,因爲我需要添加一個'group by',因爲max是一個聚合函數。 – philr