我现在的问题是,我有一个表格,其中的数据已经根据一些规则进行了排序(进一步讨论),我必须编写一个查询来实现进一步的排序。我想有条件地对表格进行排序
样品表:
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答案的机会,加入连结此小提琴 –
您的查询似乎会生成您的预期输出。你的实际产出是多少? –