我需要編寫一個查詢,做到這一點:條件ORDER BY取決於列的值
SELECT TOP 1
FROM a list of tables (Joins, etc)
ORDER BY Column X, Column Y, Column Z
如果ColumnX
是NOT NULL
,然後在那一刻,我重新選擇,採用了略有不同的ORDER BY
。
所以,我做了同樣的查詢,兩次。如果第一個在某個列中有一個NULL
,我將從該過程返回該行。但是,如果值不是NULL
- 我必須執行另一個相同的選擇,除了按不同的一列或兩列排序。
我現在所做的是第一次將它選入臨時表。然後檢查列的值。如果沒問題,請返回臨時表,否則,重做select並返回結果集。
更多細節:
在英語中,這個問題我問了數據庫:
返回我的某些出庭的結果(通過索引外鍵)。我預計大約有1000行。按出現日期排序(列,未編制索引,可爲空),最後一次出現。檢查'importId'。如果導入ID對於前1行不是NULL,那麼我們需要運行相同的查詢 - 但是這次,按導入ID(最後一個)排序,然後返回該行。否則,只需返回原始查詢的前1行。
問題是什麼? –
什麼版本的SQL Server,你能說更具體的條款?例如您試圖訂購的不同列的數據類型是什麼? –
你的方法似乎是合理的。需要了解更多關於表,索引和查詢的詳細信息,以查看是否有任何方法可以避免有效地執行2個查詢。 –