[ad_1]
vb.net 2017 の SQL サーバー テーブルの上位 10 レコードから最高のレコードを取得しようとしています。
"select max(DAYCLOSE) from Tbl_Back_Data_Nse where DAYCLOSE=(Select TOP(10) DAYCLOSE from Tbl_Back_Data_Nse where Tbl_Back_Data_Nse.ISIN ='INE358A01014' and SERIES ='EQ')")
エラーが発生する
サブクエリが複数の値を返しました。 サブクエリが =、!=、<、<=、>、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。
クエリを修正する方法
私が試したこと:
"select max(DAYCLOSE) from Tbl_Back_Data_Nse where DAYCLOSE=(Select TOP(10) DAYCLOSE from Tbl_Back_Data_Nse where Tbl_Back_Data_Nse.ISIN ='INE358A01014' and SERIES ='EQ')"
解決策 1
最初に、TOP セットを選択する場合は、ORDER BY 句を指定する必要があります。そうしないと、SQL が任意の順序で行を返すことができます。 ただ言って SELECT TOP
順序付けは適用されません。
次に、エラーは非常に具体的です: サブクエリ (SELECT TOP(10) ... )
テーブルに一致する行が 1 つしかない場合を除き、常に複数の値を返します。 返された行を単一の値と比較しているため、システムはあなたが何を意味しているのかわかりません。「本から切り取ったこれらの 10 ページに一致する果物をくれ」
比較するには、等号の両側に 1 つの値を指定する必要があります。
必要な順序がわかりませんが、次のようにしてみてください。
SQL
SELECT MAX(DayClose) FROM FROM (SELECT TOP (10) DayClose FROM Tbl_Back_Data WHERE Tbl_Back_Data_Nse.ISIN ='INE358A01014' AND SERIES ='EQ' ORDER BY InsertDate ASC)
解決策 2
次の式を見てください。
SQL
... where DAYCLOSE=(Select TOP(10) ...
システムは、単一の変数を多数のレコードと比較することはできません。 ここで達成しようとしていることを再考する必要があります。
[ad_2]
コメント