table operator を理解しようとしていますAPPLY
。
次に例を示します。
CREATE TABLE #y ( Name char(8), hoursWorked int);
GO
INSERT INTO #y VALUES ('jim',4);
INSERT INTO #y VALUES ('michael',40);
INSERT INTO #y VALUES ('raj',1000);
INSERT INTO #y VALUES ('jason',7);
INSERT INTO #y VALUES ('tim',50);
GO
CREATE TABLE #x ( Name char(8),game char(8), NumBets int);
GO
INSERT INTO #x VALUES ('jim','chess',4);
INSERT INTO #x VALUES ('jim','BG',10);
INSERT INTO #x VALUES ('jim','draughts',100);
INSERT INTO #x VALUES ('jim','football',5);
INSERT INTO #x VALUES ('michael','chess',40);
INSERT INTO #x VALUES ('michael','BG',7);
INSERT INTO #x VALUES ('michael','draughts',65);
INSERT INTO #x VALUES ('michael','football',50);
INSERT INTO #x VALUES ('raj','chess',400);
INSERT INTO #x VALUES ('raj','BG',70);
INSERT INTO #x VALUES ('raj','draughts',650);
INSERT INTO #x VALUES ('tim','draughts',60000);
GO
SELECT y.Name,
y.hoursWorked,
x.game,
x.NumBets
FROM #y y
OUTER APPLY
(
SELECT TOP 2 *
FROM #x
WHERE Name = y.Name
ORDER BY NumBets
) x
ORDER BY y.Name,
x.NumBets DESC;
私の主なハードルは、いつ使用するかを理解することAPPLY
です。だから、実装された
を使用して上記と同じ結果を得るのがどれほど難しいのだろうかと思いますか? クエリを大幅に短くしたり、読みやすくしたりしますか
?
この例が を使用する大きな利点を示さない場合、使用する利点がある明確な例は何ですか?standard sql
sql-server 2005
APPLY
APPLY
APPLY