sql修改查询的输出

时间:2013-11-26 05:12:33

标签: sql oracle

我正在运行一个返回表

的查询
key     value
a_1         5
c_4         9
a_2         3
b_1         4
b_3         1

说我想要修改我的密钥,以便每个b都会被替换为d,以便表格看起来像

key     value
a_1         5
c_4         9
a_2         3
d_1         4  <--modified
d_3         1  <--modified

我怎么能在sql(oracle)中做到这一点?

编辑:此表中的条目是值的总和。当我按照前两个响应者的建议时,sql不再对键进行分组,而是给出错误消息“missing expression”。 我尝试将键REPLACE(键,'b','d')定义为newKey和group by newKey,但是这样也没有用。 知道如何解决这个问题吗?

编辑2:分组在提议的解决方案中也有效。在我身边犯了一个错误。感谢

3 个答案:

答案 0 :(得分:1)

试试这个,

WITH t(KEY, VALUE) AS
(
     SELECT 'a_1', 5 FROM dual
     union
     SELECT 'c_4', 9 FROM dual
     UNION
     SELECT 'a_2', 3 FROM dual
     UNION
     SELECT 'b_1', 4 FROM dual
     UNION
     SELECT 'b_3', 1 FROM dual
)
SELECT REPLACE(KEY, 'b', 'd') key1 , value
       FROM t
ORDER BY key1;

/

KEY1      VALUE
---- ----------
a_1           5
a_2           3
c_4           9
d_1           4
d_3           1

答案 1 :(得分:1)

试试这个......

SELECT REPLACE(`key`, 'b', 'd') key, `value` FROM tablename

答案 2 :(得分:0)

您可以使用以下查询此查询适用于Oracle 11g R2

SELECT REPLACE("key", 'b', 'd') as "key", "value" FROM Table1;;

演示http://sqlfiddle.com/#!4/8b17c/11

请不要使用字段名作为键和值,它们可能会在任何查询中的许多地方发生冲突