0

私のSQLで正常に機能するクエリがありますが、同じクエリでDB2でエラーが発生します

ここに要件があります各大陸で最大の国を見つけ、大陸、名前、人口を表示します:そしてここにクエリ

SELECT continent, name, population FROM world x
WHERE population = 
  (SELECT max(population) FROM world y
      WHERE y.continent=x.continent
   )

エラーは

 [IBM][CLI Driver][DB2/NT] SQL0206N "Y.CONTINENT" is not valid in the context where
it is used. SQLSTATE=42703 (SQL-42S22)

DB2で機能させるために必要な変更について誰かが私を助けてくれますか

6番目の例で動作する場合はhttp://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorialで答えを確認できます...エンジンをDB2に変更します

4

3 に答える 3

0

これがあなたがそれをすることができる1つの方法です:

SELECT x.continent, x.name, x.population 
FROM world x
  JOIN 
  (
    SELECT continent, max(population) pop
    FROM world
    GROUP BY continent
  ) y ON x.continent = y.continent AND x.population = y.pop

これがデモンストレーションするSQLフィドルです。

幸運を。

于 2013-02-07T14:47:45.060 に答える
0

DB2テーブル'world'には、"REGION"として定義されている"CONTINENT"という列がありません。クエリは問題ありません。テーブル定義の不一致に関する問題です。以下のクエリは完全に機能します!

SELECT REGION, name, population FROM world x
WHERE population = 
  (SELECT max(population) FROM world y
      WHERE y.REGION=x.REGION
   )
于 2013-02-07T18:39:07.493 に答える
-1

問題は世界xと世界yにあると思います。これらがテーブルの名前である場合は、角かっこ[worldx]と[worldy]で囲んでみてください。

そうでない場合は、max(population)を指定してみてください。y.populationまたはx.populationのいずれかです

于 2013-02-07T14:46:42.447 に答える