表格中有4列。现在它的格式如下
Action Value_XML Control_ID Data_Value
-----------------------------------------------------------
SEARCH <ACTION v="SEARCH"/> SEARCH SEARCH
SEARCH <BROKERREF v="BZ815"/> BROKERREF BZ815
SEARCH <SYSTEM v=" 0"/> SYSTEM 0
Chg <ACTION v="Chg"/> Chg Chg
Chg <BROKERREF v="BZ815"/> BROKERREF BZ815
Chg <SYSTEM v=" 0"/> SYSTEM 0
我需要以下格式记录
Action Value_XML Control_ID Data_Value
-----------------------------------------------------------
SEARCH <SYSTEM v=" 0"/> SYSTEM 0
SEARCH <BROKERREF v="BZ815"/> BROKERREF BZ815
SEARCH <ACTION v="SEARCH"/> SEARCH SEARCH
Chg <SYSTEM v=" 0"/> SYSTEM 0
Chg <BROKERREF v="BZ815"/> BROKERREF BZ815
Chg <ACTION v="Chg"/> Chg Chg
注意:我需要具有相同control_id
的行,而datavalue应该是特定操作列的最后一行
提前致谢
答案 0 :(得分:1)
SELECT t.*
FROM t
ORDER BY Action, CASE WHEN Control_ID = Data_Value THEN 1 ELSE 0 END
;
答案 1 :(得分:0)
您似乎想要返回Action
和Control_Id
排序的结果集:
select t.*
from table t
order by Action,
choose(Control_Id, 'SYSTEM', 'BROKERREF', 'SEARCH', 'Chg');
答案 2 :(得分:0)
按顺序获取所需的列并给出desc条件将产生样本数据的结果输出
DECLARE @T TABLE (Action varchar(30),value_xml varchar(30),ControlId varchar(20),Data_value varchar(20))
insert into @T (Action,value_xml,ControlId,Data_value)values ('SEARCH','<ACTION v="SEARCH"/>','SEARCH','SEARCH'),
('SEARCH','<BROKERREF v="BZ815"/>','BROKERREF','BZ815'),('SEARCH','<SYSTEM v=" 0"/>','SYSTEM','0'),
('Chg','<ACTION v="Chg"/>','Chg','Chg'),('Chg','<BROKERREF v="BZ815"/>','BROKERREF','BZ815'),
('Chg','<SYSTEM v=" 0"/> ','SYSTEM','0')
select * from @T
ORDER BY Action desc,value_xml desc,ControlId desc,Data_value
答案 3 :(得分:0)
将此添加到查询的末尾:
ORDER BY
Action,
CASE WHEN Control_ID = DataValue THEN 1 ELSE 0 END