更新:感謝Sifu Bill的建議,我修改了SQL查詢。現在它返回正確數量的不同資產(五個)。將相關的子查詢重寫爲JOIN?
是否有可能將以下相關子查詢重寫爲JOIN?
SELECT TOP 100 PERCENT Asset_ID, work_order_id, status_id,
downtime_hours, date_completed
FROM dbo.mtvw_wo_reason1
WHERE (Asset_ID IN
(SELECT TOP 5 Asset_ID from mtvw_wo_reason1
WHERE (Date_Completed BETWEEN '1-Oct-2009' AND '31-Oct-2009')
GROUP BY Asset_ID
ORDER BY SUM(Downtime_hours) DESC))
輸出如下:
Asset_ID work_order_id status_id downtime_hours Date_Completed
SFM2019 2009-724 Completed .5000 2009-09-01 17:55:09.000
SFM2019 2009-761 Completed .5000 2009-09-15 09:03:39.000
SFM2019 2009-828 Completed 8.0000 2009-10-02 00:00:00.000
SFM2043 2009-683 Completed .5000 2009-08-14 00:00:00.000
SFM2043 2009-734 Completed 1.0000 2009-09-05 00:54:33.000
SFM2043 2009-741 Completed 1.0000 2009-09-08 17:05:09.000
SFM2043 2009-756 Completed .5000 2009-09-14 07:56:41.000
SFM2043 2009-792 Completed 1.0000 2009-09-22 00:00:00.000
SFM2043 2009-826 Completed 8.0000 2009-10-03 02:00:19.130
SFM2043 2009-983 Completed 1.0000 2009-10-30 00:00:00.000
SFM2045 2009-794 Completed 17.0000 2009-09-24 00:00:00.000
SFM2045 2009-808 Completed 1.0000 2009-09-26 16:01:25.850
SFM2045 2009-811 Completed 3.0000 2009-09-27 09:47:45.543
SFM2045 2009-816 Completed 24.0000 2009-09-30 15:14:35.000
SFM2045 2009-858 Completed 3.0000 2009-10-12 00:00:00.000
SFM2045 2009-861 Completed .5000 2009-10-13 01:11:50.900
SFM2045 2009-975 Completed 1.0000 2009-10-28 00:00:00.000
SFM2045 2009-984 Completed 3.0000 2009-10-30 00:00:00.000
SFM2088 2009-777 Completed .5000 2009-10-01 12:49:57.000
SFM2088 2009-853 Completed .5000 2009-10-09 00:00:00.000
SFM2088 2009-855 Completed 10.0000 2009-10-09 00:00:00.000
SFM2200 2009-753 Completed 8.0000 2009-09-11 00:00:00.000
SFM2200 2009-830 Completed 8.0000 2009-10-09 00:00:00.000
在本質上查詢需要:
返回前5名的資產與 最高累計停機時間 月10月,和細分爲 這些 資產的相關工作訂單
查詢必須以不需要內部查詢中存在Date_Completed標準的方式進行重寫(這甚至可能嗎?)。使用私服比爾的回答僅得到11行(應該是23):從私服比爾的查詢
輸出:
Asset_ID work_order_id status_id downtime_hours Date_Completed
SFM2045 2009-858 Completed 3.0000 2009-10-12 00:00:00.000
SFM2045 2009-861 Completed .5000 2009-10-13 01:11:50.900
SFM2045 2009-975 Completed 1.0000 2009-10-28 00:00:00.000
SFM2045 2009-984 Completed 3.0000 2009-10-30 00:00:00.000
SFM2200 2009-830 Completed 8.0000 2009-10-09 00:00:00.000
SFM2043 2009-826 Completed 8.0000 2009-10-03 02:00:19.130
SFM2043 2009-983 Completed 1.0000 2009-10-30 00:00:00.000
SFM2088 2009-777 Completed .5000 2009-10-01 12:49:57.000
SFM2088 2009-853 Completed .5000 2009-10-09 00:00:00.000
SFM2088 2009-855 Completed 10.0000 2009-10-09 00:00:00.000
SFM2019 2009-828 Completed 8.0000 2009-10-02 00:00:00.000
謝謝你的任何見解。
這是一個子查詢,但不是相關的子查詢。 – 2009-11-09 06:42:55
Sifu Bill根據維基百科的相關子查詢是: 1.使用WHERE子句中外部查詢的值。 2.對於由外部查詢處理的每一行,子查詢會被評估一次。 這就是我想要完成的,你能否提供一些見解?謝謝。 – Greenhorn 2009-11-09 08:48:03