我在表格中有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
注意:我需要按如下方式更新行:
应该交换第1行和第3行(当Control_id和DataValue相同时,它应该是最后一行) 应该交换第4行和第6行(当Control_id和DataValue相同时应该是最后一行)
注意:这里的行数是动态的,没有必要我们只有3行。
提前致谢
答案 0 :(得分:3)
您不会包含查询或表格详细信息,甚至包括您正在使用的数据库,因此很难确定。
通常,sql数据库以任意顺序返回记录。如果您希望您的结果按某种特定顺序排列,则必须包含适当的ORDER BY子句,在这种情况下,该子句似乎位于最后一列。
答案 1 :(得分:1)
如前所述,两个数据集是相同的,只有行的顺序不同。话虽如此,我认为以下内容将提供您所寻找的内容:
SELECT Action, Value_XML, Control_ID, Data_Value
from MyTable
order by
Action
,case
when Control_ID = DataValue then 1 -- This assumes the datatypes can be compared
else 0
end
,Value_XML
(你可以在case
条款中使用order by
语句执行不太可能的事情......)