2013-11-26 74 views
-1

我正在返回表SQL修改輸出

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

說我想修改我的鑰匙,使每個B將b與廣告所取代,這樣的表看起來像

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

我怎麼能在SQL(oracle)中做到這一點?

編輯:此表中的條目是超過值的總和。當我按照前兩個響應者的建議時,sql不會再對關鍵字進行分組,但會給出錯誤消息「缺少表達式」。 我試着將關鍵字REPLACE(key,'b','d')定義爲newKey和group by newKey,但是這並不起作用。 任何想法如何解決這個問題?

編輯2:分組也適用於所提出的解決方案。在我身邊有一個錯誤。由於

+1

你必須給你的表和查詢更多詳情給出這些數據。用d替換b的邏輯還不清楚。 – Noel

+0

因爲你使用關鍵字/保留字爲你的字段名,所以你沒有得到結果,請嘗試我添加的答案,它在Oracle中使用相同的字段名稱 –

回答

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 
+0

謝謝。我簡化了這個問題中的查詢。實際的查詢將總和鍵和(鍵)和鍵組。這在替換後不再起作用。請參閱編輯 – chrise

+0

@ user1734278,請顯示您的修改查詢。 – Dba

+0

對不起,我的查詢出錯了。解決方案可行 – chrise

1

嘗試......

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

您可以使用下面的查詢,該查詢在Oracle 11g中的工作原理R2

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

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

請不要使用現場名稱作爲鍵和值,他們可以在任何查詢,在很多地方發生衝突