学校で行ったテストで、別のテーブルを使用したり、句 ORDER BY を使用したりせずに、カーソルを使用して従業員の給与でテーブル内のデータをソートする t-sql スクリプトを作成するという挑戦的な質問がありました。
私が挑戦的な質問だと言ったので、誰もそれをしませんでした.
よろしくお願いします!
学校で行ったテストで、別のテーブルを使用したり、句 ORDER BY を使用したりせずに、カーソルを使用して従業員の給与でテーブル内のデータをソートする t-sql スクリプトを作成するという挑戦的な質問がありました。
私が挑戦的な質問だと言ったので、誰もそれをしませんでした.
よろしくお願いします!
このようにデータを並べ替えるのは絶対に間違った方法であることに同意します-とにかく、このアプローチはOPが要求したことを行います。WHERE
そして、はい -を使用せずに順序付けを行うために、最後の句なしで内部クエリを実行できるため、カーソルは明らかに不要ORDER BY
です。元の質問に沿って追加しただけです。
--CREATE TABLE salary( emplId int, salary int );
--INSERT INTO salary VALUES( 4, 150), (2, 100), (3, 200), (1, 10);
DECLARE @emplId INT;
DECLARE @runs INT = 0;
DECLARE sal CURSOR
FOR SELECT EmplId FROM "salary"
OPEN sal
FETCH NEXT FROM sal INTO @emplId
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT
S."emplId", S."salary"
FROM
"salary" AS S
CROSS APPLY ( SELECT COUNT( "salary" ) AS "successors"
FROM "salary"
WHERE "salary" < S."salary" ) AS Data
WHERE
Data."successors" = @runs
SET @runs +=1
FETCH NEXT FROM sal INTO @emplId
END
CLOSE sal
DEALLOCATE sal;