2021年4月16日金曜日

SQL Server サブクエリにORDER BYやGROUP BYが使えない!?

おはようございます。
こんにちは。
こんばんは。
ドラゴンです。

SQL ServerでサブクエリにORDER BYやGROUP BYを入れて実行すると
エラーになってしまったので、解決策を備忘録として残しておきます。

★今回検証用につかうテーブル★
Aテーブル

No グループID 名前 日付
1 1 太郎 2021/04/01
2 1 二郎 2021/04/02
3 2 三郎 2021/04/03
4 2 四郎 2021/04/04

目次

概要

SELECT
  COUNT(*)
FROM
  (
    SELECT
      グループID
      ,名前
      ,日付
    FROM
      A
    GROUP BY
      グループID
      ,名前
      ,日付
    ORDER BY
      日付
  ) AS A

上のSQLを実行すると、上記の画像のようにエラーが出てしまいました。
え?サブクエリにORDER BYやGROUP BYを入れたらあかんのか・・・

解決策

SELECT
  COUNT(*)
FROM
  (
    SELECT
      グループID
      ,名前
      ,日付
    FROM
      A
    GROUP BY
      グループID
      ,名前
      ,日付
    ORDER BY
      日付
    OFFSET 0 ROWS
  ) AS A

それで、色々調べていくと、
ORDER BYの後ろに「OFFSET 0 ROWS」を入れると、問題なく動くという情報を手に入れたので、
実際に試してみたところ、正常に実行することができましたー!

最後に

過去にOracleを使用していたときは、サブクエリにORDER BYやGROUP BYを入れて実行しても問題にならなかったので、少し戸惑ってしまいましたね...
注意点として「OFFSET 0 ROWS」が使えるのは「SQL Server 2012」からなので、使用する際は「SQL Server」のバージョンを確認しないといけないです。

それでは、ドラゴンでした~~~。

0 件のコメント:

コメントを投稿