我現在的問題是,我有一個表格,其中的數據已經根據一些規則進行了排序(進一步討論),我必須編寫一個查詢來實現進一步的排序。我想有條件地對錶格進行排序
樣品表:
PBaseIDOrder SecuritySymbol TradeDate TransactionCode rownum
1 13033w7l1 2017-01-06 00:00:00.000 li 76
1 13033w7l1 2017-01-06 00:00:00.000 pa 77
1 13033w7l1 2017-01-06 00:00:00.000 li 78
1 13033w7l1 2017-01-06 00:00:00.000 pa 79
1 13033w7l1 2017-01-06 00:00:00.000 li 80
1 13033w7l1 2017-01-06 00:00:00.000 pa 81
1 13033w7l1 2017-06-01 00:00:00.000 in 82
1 542433ry5 2017-01-06 00:00:00.000 pa 329
1 542433ry5 2017-01-06 00:00:00.000 li 330
1 542433ry5 2017-01-11 00:00:00.000 sl 331
1 542433ry5 2017-01-11 00:00:00.000 sa 332
輸出,我從查詢想: 樣品表:
PBaseIDOrder SecuritySymbol TradeDate TransactionCode rownum
1 13033w7l1 2017-01-06 00:00:00.000 li 76
1 13033w7l1 2017-01-06 00:00:00.000 pa 77
1 13033w7l1 2017-01-06 00:00:00.000 li 78
1 13033w7l1 2017-01-06 00:00:00.000 pa 79
1 13033w7l1 2017-01-06 00:00:00.000 li 80
1 13033w7l1 2017-01-06 00:00:00.000 pa 81
1 13033w7l1 2017-06-01 00:00:00.000 in 82
1 542433ry5 2017-01-06 00:00:00.000 li 330
1 542433ry5 2017-01-06 00:00:00.000 pa 329
1 542433ry5 2017-01-11 00:00:00.000 sl 331
1 542433ry5 2017-01-11 00:00:00.000 sa 332
所以這裏的想法是我想根據PBaseIDOrder所有記錄進行排序,然後securitysymbol然後TradeDate然後根據交易代碼。基於交易代碼的分類應該是這樣的:'li'交易代碼總是在'pa'之前出現,而'sl'交易代碼在'sa'之前出現,之後'in'出現。
例如 假設安全符號'13033w7l1'有3'li'3'pa'交易,那麼在這種情況下'pa'會在'li'根據rownum值決定後出現。
當我運行這個查詢時,所有'pi'和'li'事務都會出現分組,我不想要。
select PortfolioBaseIDOrder,SecuritySymbol,TradeDate,TransactionCode,rownum
from dbo.abc where SecuritySymbol='542433ry5' or SecuritySymbol='13033w7l1'
order by PortfolioBaseIDOrder,SecuritySymbol,TradeDate,(case TransactionCode
when 'li' then 1
when 'pa' then 2
when 'sl' then 3
when 'sa' then 4 end),rownum;
如果你準備含有DML和任何一個http://sqlfiddle.com/#!6選擇你做和編輯你的問題,你冷highten答案的機會,加入連結此小提琴 –
您的查詢似乎會生成您的預期輸出。你的實際產出是多少? –