2017-07-28 49 views
0

我想將數據庫中的值組合起來,這樣對於那些不是軟件開發人員而是無法爲此考慮解決方案的人來說更容易。下面是數據庫的一個例子。當技術人員更改某個公司的現有價值時,它會創建3個條目,如下所示。組合並連接具有特定值的行

我想要做的是將它連接成類似"{user} updated {old city} to {new city}"。我想將它放在一個名爲Description的新列中,該行使用「new value」標誌,但不想觸及沒有「舊值」或「新值」的行,因爲有許多不同的標誌用於他們可能正在進行的更改類型。我真的不知道如何去結合這樣的行。

標註爲"num"的部分是針對每個更改進行的,並且只有像示例中那樣的組具有相同的值,所以我想也許我可以以某種方式使用group by來清除所做的任何更改只需要一行,因爲我只是在尋找像下面這種格式的塊。

_ id_|_CompName |_val_flag | value _|num|user|______updated______ 
1224 |Test company|old_value |Old City|594|user|2017-07-28 15:42:58.117 
1225 |Test company|new_value |New City|594|user|2017-07-28 15:42:58.117 
1226 |Test company|rec_value |New City|594|user|2017-07-28 15:42:58.117 
+0

什麼是數據庫?版本#?另外,「REC_VALUE」記錄的意義是什麼?我們應該考慮它嗎?看起來像「GROUP BY」USER是開始的地方。是「CITY」專欄名稱?那麼,NEW CITY和OLD CITY是內部相關的?如果是這樣,需要根據USER和VALUE(下半部分,減去NEW/OLD)編寫GROUP BY。 – Guru

回答

0

幾個問題開始。

  • 什麼是數據庫?版本#?
  • 另外,「REC_VALUE」記錄的意義是什麼?我們應該考慮它嗎?

看起來像「GROUP BY」USER是從哪裏開始的。根據USER和NUM編寫GROUP BY。

像下面這樣的東西。 Oracle SQL語法(未經測試)。

SELECT USER ||' updated ' || OLD_VAL || ' to ' || NEW_VAL AS DESCRIPTION 
FROM (
SELECT AUD.USER 
, MAX(CASE WHEN _VAL_FLAG = 'old_value' THEN VALUE END) OLD_VAL 
, MAX(CASE WHEN _VAL_FLAG = 'new_value' THEN VALUE END) NEW_VAL 
FROM AUDIT_TABLE AUD 
GROUP BY AUD.USER, NUM) 
+0

謝謝我剛剛看到你現在回答,因爲我沒有收到電子郵件通知,但是這個工作正常!週末我正在運行想法,我正在考慮使用案例。此外,rec值並不重要,它只是數據庫每次進行更改以保存所做更改時使用的第三個值。此查詢適用於存儲我們所有公司客戶信息的數據庫。 – dcarter

相關問題