DB2 - Problem description
Problem IC90093 | Status: Closed |
QUERY CONTAINING AN ORDER BY CLAUSE REFERENCING AN AGGREGATE FUNCTION MIGHT PRODUCE A SQL0901N | |
product: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problem description: | |
Under rare scenarios, DB2 might produce SQL0901N error message if the following conditions are true: 1. The query contains a group by clause 2. The output column list contains an expression 3. An order by clause is defined in the same subselect as the expression 4. The order by clause contains a aggregation function of the expression in 3. eg. SELECT ( CASE WHEN flag = 1 THEN ID2 ELSE '' END) AS ID FROM ( SELECT ID as ID2, 1 as flag FROM temp ) a GROUP BY ( CASE WHEN flag = 1 THEN ID2 ELSE '' END) ORDER BY min(ID) desc; Error message: SQL0901N The SQL statement failed because of a non-severe system error. Subsequent SQL statements can be processed. (Reason "QNC in column function references complex expression".) SQLSTATE=58004 db2diag.log messages: FUNCTION: DB2 UDB, SW- common services, sqlnn_cmpl, probe:650 MESSAGE : ZRC=0x8031000F=-2144272369=SQLNN_E_AMBIG "Conflicting or ambiguous elements in the command or an internal object" DATA #1 : String, 62 bytes An unexpected error was detected during statement compilation. DATA #2 : Boolean, 1 bytes true DATA #3 : Boolean, 1 bytes false DATA #4 : Boolean, 1 bytes false DATA #5 : Boolean, 1 bytes false DATA #6 : Hex integer, 4 bytes 0x00000000 DATA #7 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes sqlcaid : SQLCA sqlcabc: 136 sqlcode: -901 sqlerrml: 52 sqlerrmc: QNC in column function references complex expression sqlerrp : SQLNQ002 sqlerrd : (1) 0x801A006D (2) 0x00000000 (3) 0x00000000 (4) 0x00000000 (5) 0xFFFFFEDE (6) 0x00000000 sqlwarn : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) sqlstate: DATA #8 : Hex integer, 4 bytes 0x00000040 DATA #9 : String, 244 bytes Compiler error stack for rc = -2144272369: sqlnn_cmpl[300] sqlnp_main[250] sqlnp_parser[510] sqlnp_smactn[100] sqlnq_sem_function_call[100] sqlnq_proc_agf[290] | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * All * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 version 101 fix pack 3 * **************************************************************** | |
Local Fix: | |
Add the aggregate expression in the order by clause into the select list. eg. rewritten query: select ID from ( SELECT ( CASE WHEN flag = 1 THEN ID ELSE '' END) AS ID , min (( CASE WHEN flag = 1 THEN ID ELSE '' END)) as min_ID FROM ( SELECT ID as ID2, 1 AS flag FROM CAPO_IDGCBA.RDE_MONITOR_VIEW rqi ) a GROUP BY ( CASE WHEN flag = 1 THEN ID ELSE '' END) ) ORDER BY min_ID desc; | |
available fix packs: | |
DB2 Version 10.1 Fix Pack 3 for Linux, UNIX, and Windows | |
Solution | |
Fix was included in DB2 version 101 fix pack 3 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 07.02.2013 07.10.2013 07.10.2013 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.1.0.3 | |
10.1.0.3 |