我有以下查詢:Oracle的哪些SKU支持WM_CONCAT?
SELECT wm_concat(DISTINCT NAME) as Methods FROM TPM_TRAININGPLAN
JOIN TPM_DELIVERYMETHODS USING (METHODID)
WHERE PROJECTID=735 AND VERSIONID=1
ORDER BY NAME
在我們的生產數據庫(一些超級昂貴的Oracle SKU,成本比我家*以上),則返回:
I/OLT,ILT-WEB,OLT,QRG
然而,在我的本地Oracle Express實例(11克),我使用的發展,我得到的錯誤:
>[Error] Script lines: 13-16 ------------------------
ORA-00904: "WM_CONCAT": invalid identifier
Script line 13, statement line 1, column 7
Oracle是否快遞不支持這一點,還是有一個變通(如因爲我可以從我們的生產服務器複製功能,或運行一些腳本來「模仿」它?)謝謝!
*沒有認真,它實際上比我的房子花費更多。
UPDATE:
至於建議,我試過LISTAGG功能(這的確是包含在這兩個快遞11g和「我們要購買的Oracle許可證或第二遊艇」 SKU這似乎差不多的工作。 ,但有一些缺點,我不能找到一個很好的解決辦法首先,查詢:
SELECT LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY NAME) Methods FROM
TPM_TRAININGPLAN
JOIN TPM_DELIVERYMETHODS USING (METHODID) WHERE PROJECTID=240 AND VERSIONID=1
返回結果:
COMM,COMM,ILT-F2F,ILT-F2F,ILT-F2F,ILT-F2F,ILT-F2F
但是,我想刪除這些蠢事。更改NAME
到DISTINCT NAME
將拋出錯誤DISTINCT option not allowed for this function
那麼大,我們就折騰了CTE在那裏:
WITH Methods AS
(SELECT DISTINCT NAME
FROM TPM_TRAININGPLAN
JOIN TPM_DELIVERYMETHODS USING (METHODID) WHERE PROJECTID=240 AND VERSIONID=1)
SELECT LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY NAME) Methods FROM Methods
這工作,但我忘了提,我跑這整個事情在更大的查詢中嵌套選擇。看起來你可以嵌套選擇包含一個CTE,但是在查詢中,你不能再引用根查詢,只能引用CTE。所以現在我不能用我所在的行取代240和1。
什麼是* Oracle SKU *? –
http://en.wikipedia.org/wiki/Stock-keeping_unit –
@MikeChristensen我不是這樣說的:「所以現在我不能用我所在的行取代240和1。」您是否需要將projectId和/或versionId上的聚合分組? – Harrison