通过ODBC和Crystal Reports 2008,我正在使用oracle 11(不确定关于确切版本,但由于LISTAGG不起作用,我认为它不是版本2)。ORACLE/SQL:wm_concat&order
这里是我的问题:
这里有一个表:
TABLE ODB.TASK_CARD_CONTROL
------------------------------------------
task_card control_category code
------------------------------------------
1 zone 17
1 zone 33
1 zone 21
2 zone 18
2 zone 05
3 zone 55
3 zone 32
3 zone 72
我使用的WM_CONCAT函数来获取这样的事情:
task_card zones
1 17,33,21
2 18,05
3 55,32,72
下面是该SQL:
SELECT TASK_CARD, WM_CONCAT(code) as ZONES
FROM ODB.TASK_CARD_CONTROL
WHERE ODB.TASK_CARD_CONTROL.CONTROL_CATEGORY = 'ZONE'
GROUP BY TASK_CARD
但我想这些区域进行排序,所以我想这:
SELECT TASK_CARD, WM_CONCAT(code) as ZONES
FROM (SELECT TASK_CARD, CODE, CONTROL_CATEGORY FROM ODB.TASK_CARD_CONTROL
ORDER BY CODE)
WHERE ODB.TASK_CARD_CONTROL.CONTROL_CATEGORY = 'ZONE'
GROUP BY TASK_CARD
但由于某些原因,它返回以下错误:
Failed to retrieve data from the database.
Details: 42S22:[Oracle][ODBC][Ora]ORA-00904:
"ODB"."TASK_CARD_CONTROL"."CONTROL_CATEGORY" : invalid identifier
我真不明白我在做什么错在这里...任何人可以给我一个提示?
好吧,我在此期间想过这件事。我尝试过:SELECT TASK_CARD,WM_CONCAT(code)as ZONES FROM(SELECT TASK_CARD,CODE,FROM ODB.TASK_CARD_CONTROL WHERE ODB.TASK_CARD_CONTROL.CONTROL_CATEGORY ='ZONE'ORDER BY CODE) GROUP BY TASK_CARD - 但省略CONTROL_CATEGORY in选择给了我一个错误。在你的查询中添加它,现在它似乎工作正常!谢谢:) – 2011-02-11 15:19:58
@LalitKumarB你为什么问我?我正在回答一个WM_CONCAT被(偶然)使用的问题,而不是主张它的使用! – 2015-09-11 15:56:46
@LalitKumarB没问题! – 2015-09-11 16:10:23