当我运行查询来计算列的中值时,为什么会得到SQLCODE -206?

时间:2017-12-07 21:26:16

标签: sql db2

我试图根据DB2中的“key”找到字段“bal”的中值。执行此代码时出现此错误“错误:DB2 SQL错误:SQLCODE = -206,SQLSTATE = 42703,SQLERRMC = KEY,DRIVER = 3.66.46,SQLState:42703)。

感谢您的评论!!

        SELECT
           key,
           AVG(bal)
        FROM
        (
           SELECT
              key,
              bal,
              ROW_NUMBER() OVER (
                 PARTITION BY key 
                 ORDER BY bal ASC) AS RowAsc,
              ROW_NUMBER() OVER (
                 PARTITION BY key 
                 ORDER BY bal DESC) AS RowDesc
           FROM tab1
        ) x
        WHERE 
           RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
        GROUP BY key
        ORDER BY key;

1 个答案:

答案 0 :(得分:1)

确保对key的每次引用都变为"key"

SELECT
      "key"
    , AVG(bal)
FROM (
      SELECT
            "key"
          , bal
          , ROW_NUMBER() OVER (PARTITION BY "key"
                               ORDER BY bal ASC)  AS rowasc
          , ROW_NUMBER() OVER (PARTITION BY "key"
                               ORDER BY bal DESC) AS rowdesc
      FROM tab1
) x
WHERE RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
GROUP BY
      "key"
ORDER BY
      "key"
;