试图运行一些DB2查询,但没有得到任何结果。DB2 sql查询运行
SELECT APPLICATION_ID,
CLIENT_WRKSTNNAME
FROM TABLE(MON_GET_CONNECTION(cast(NULL as bigint), -2)) AS t
WHERE APPLICATION_ID IN (SELECT ''''||APPLICATION_ID||''''
FROM SYSIBM.SYSDUMMY1)
问题出在WHERE子句中的子查询中。如果我只运行
SELECT ''''||APPLICATION_ID||''''
FROM SYSIBM.SYSDUMMY1
部分并将结果复制/粘贴到大查询 - 我会得到需要的结果。子查询的结果如下所示:'92.81.111.13.51632.13022516453'
,它必须是String/varchar。
我在做什么错?
这是不同的APPLICATION_ID在这里:'SELECT''''|| APPLICATION_ID ||''''FROM SYSIBM.SYSDUMMY1',而不是t.APPLICATION_ID。 SYSIBM.SYSDUMMY1(dummy表)中的APPLICATION_ID和select中的APPLICATION_ID来自t。 –
@udar_molota。 。 。我不知道您使用的是哪个版本的DB2,但在我知道的所有版本中,该表没有名为“APPLICATION_ID”的字段(请参阅http://pic.dhe.ibm.com/infocenter/dzichelp /v2r2/index.jsp?topic=%2Fcom.ibm.db2z10.doc.sqlref%2Fsrc%2Ftpc%2Fdb2z_sysibmsysdummy1table.htm)。因此,该查询将解析来自外部作用域的字段,该作用域具有别名“t”。 –
你几乎是正确的。 'MON_GET_CONNECTION'是一个表FUNCTION,SYSIBM.SYSDUMMY1是虚表。我使用9.7,我的问题的正确答案如下。 –