store procedure 變數控制排序 |
答題得分者是:老大仔
|
heart75047
一般會員 發表:9 回覆:13 積分:19 註冊:2010-05-20 發送簡訊給我 |
在store procedure 想要透過 輸入變數 控制 輸出的表的 order 升序 或 降序
以前是用 字串 組合SQL語法 最後只要 if ... SET @SQL=@SQL 'DESC ' else 'ASC' 類似這樣 就好 現在輸出換成暫存表 只能這樣寫 [code sql] if @group= 0 begin if @order_cust_rank = 0 begin if @order_year = 0 select * from @M_Table order by F_Year DESC,rank DESC if @order_year = 1 select * from @M_Table order by F_Year ASC,rank DESC end if @order_cust_rank = 1 begin if @order_year = 0 select * from @M_Table order by F_Year DESC,rank ASC if @order_year = 1 select * from @M_Table order by F_Year ASC,rank ASC end if @order_cust_rank = 2 begin if @order_year = 0 select * from @M_Table order by F_Year DESC,cust_code DESC if @order_year = 1 select * from @M_Table order by F_Year ASC,cust_code DESC end if @order_cust_rank = 3 begin if @order_year = 0 select * from @M_Table order by F_Year DESC,cust_code ASC if @order_year = 1 select * from @M_Table order by F_Year ASC,cust_code ASC end end ... [/code] 底下if @group= 1 只是把 F_Year 跟 cust_code 順序對換... 請問該如何 縮減這段程式碼 或讓這段程式碼 變得比較容易理解 case 好像只能用在 欄位名稱 用在ASC/DESC不行 爬文說 把暫存表 弄成全域變數 #開頭 就可以 但這是公司 的資料庫我不敢亂動.. 資料庫版本 MSSQL 2012 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
heart75047
一般會員 發表:9 回覆:13 積分:19 註冊:2010-05-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |