重複の可能性:
ストアドプロシージャから選択しますか?
T-SQL構文にストアドプロシージャを含めるにはどうすればよいですか?
select * from CITY_TABLE C where
COUNT_PEOPLE_PROCEDURE(C.ID) > 3
重複の可能性:
ストアドプロシージャから選択しますか?
T-SQL構文にストアドプロシージャを含めるにはどうすればよいですか?
select * from CITY_TABLE C where
COUNT_PEOPLE_PROCEDURE(C.ID) > 3
このようにストアドプロシージャをクエリに含めることはできません。
代わりに、スカラー関数を作成できます
create function COUNT_PEOPLE_FUNCTION
(
@ID int
)
returns int
as
begin
declare @Result int
<... your code here ...>
return @Result
end
その後
select * from CITY_TABLE C where COUNT_PEOPLE_FUNCTION(C.ID) > 3
ただし、実際には、スカラー関数が行ごとに個別に呼び出されるため、クエリが遅くなる可能性があります。
コメントによると、オカレンスがn個あるレコードのみを取得する必要がある場合は、次のようなサブクエリを使用できます。
SELECT * FROM CITY_TABLE WHERE IDPerson IN (
SELECT IDPerson FROM CITY_TABLE GROUP BY IDPerson HAVING COUNT(*) > 3
)
明らかに、正確な列名はわかりませんが、これがアイデアです。
他の人がすでにそのようなストアドプロシージャを使用できないと言っているように、可能であれば関数を使用することをお勧めします。関数を使用できない場合(および使用できる場合でも)、このページを参考資料としてお勧めします。