VB6 SP5 SQL server 2000です。
VBからSQL文で、複数の項目のTOP3を取得しようと思います。
tbl1,tbl2のテーブルから金額(kin)の高いもののコード(cd)
と名称(nm)を取得します。
テーブル 取得カラム(文字型) 順序に使うカラム(数値型)
tbl1 cd nm kin
tbl2 cd nm kin
SQL文一回でしようと思って以下のような文にしました。
select U.cd,U.nm,U.kin ,U.区分 from
(select top 3 cd,nm,kin,'1' as 区分 from tbl1 order by kin desc
union all
select top 3 cd,nm,kin,'2' as 区分 from tbl2 order by kin desc
) U
order by U.区分,U.kin
しかしこれを実行すると、kinの大きい順には表示されませんでした。
何か間違っているのでしょうか?
http://msdn2.microsoft.com/ja-jp/library/ms191141.aspx
手元に SQL Server 2000/2005 が無いので確認していませんが、
上記のヘルプトピックを見た限りでは、
≫ UNION を使用するときは、個別の SELECT ステートメントで
≫ 独自の ORDER BY 句や COMPUTE 句を指定することはできません。
≫ ORDER BY 句または COMPUTE 句は最後の SELECT ステートメントの後に
≫ 1 つだけ指定でき、その句は最終的な結果セットの組み合わせに
≫ 適用されます。
と書かれているので、このあたりに原因があるのかも。
ツイート | ![]() |