1. ホーム
  2. sql-server

[解決済み] ')' 付近の構文が正しくない場合の対処方法

2022-02-11 13:19:14

質問

いろいろ試しましたが、このクエリのどこが問題なのかがわかりません。

')' 付近に不正な構文があります。

string query = "SELECT SUM(See) AS [All]
 , (
       SELECT TOP 1 See
       FROM StateSite
       WHERE StatDate = @StatDate
   ) AS [Now]
 , (
       SELECT TOP 1 See
       FROM StateSite
       WHERE StatDate = @Yesterday
   ) AS [Last]
 , (
       SELECT SUM(See)
       FROM (
           SELECT TOP 7 *
           FROM StateSite
           ORDER BY id DESC
       )
   ) AS [week]
FROM StateSite";

は、アクセスデータベースでは正常に動作しますが、SQLサーバーでは動作しません。

解決方法は?

あなたの問題は、結果セットにエイリアスを割り当てずに、サブクエリから選択しようとしていることです。

クエリを次のように変更するだけです。

string query = "select sum(See) as[All] ,(select top 1 See from StateSite
where StatDate=@StatDate)as[Now], (select top 1 See from StateSite where
StatDate=@Yesterday)as[Last],(select sum(See)  from  (select top 7 * from
StateSite order by ID desc))as[week] From StateSite";

これに対して

string query = "select sum(See) as[All] ,(select top 1 See from StateSite
where StatDate=@StatDate)as[Now], (select top 1 See from StateSite where
StatDate=@Yesterday)as[Last],(select sum(See)  from  (select top 7 * from
StateSite order by ID desc) as [subQuery])as[week] From StateSite";