我需要一個存儲過程,它允許我基於兩個輸入參數返回排序結果:@sortColumnName和@sortDirection。我編寫了下面的存儲過程,但是當我運行它時,出現此錯誤:「無效的列名'LastPayCheckDate'。」ORDER BY帶CASE語句的別名列
SELECT Name, SUM(Pay), MAX(PayCheckDate) as LastPayCheckDate
FROM Employee
GROUP BY Name
ORDER BY
CASE WHEN @sortColumnName = 'LastPayCheckDate' AND @sortDirection = 'ASC'
THEN [LastPayCheckDate] END ASC,
CASE WHEN @sortColumnName = 'LastPayCheckDate' AND @sortDirection = 'DESC'
THEN [LastPayCheckDate] END DESC
這是怎麼回事?我想t-sql在select之前運行case語句...我是對的嗎?我該如何解決這個問題?
感謝您的幫助!
您對使用動態SQL有什麼看法? – 2010-06-28 17:22:52
DBA不讓我這樣做。 – Martin 2010-06-28 17:23:37
爲什麼不使用'Last(PayCheckDate)'而不是'[LastPayCheckDate]'? – Gabe 2010-06-28 17:27:15