回答編集履歴
3
追記
answer
CHANGED
@@ -15,4 +15,26 @@
|
|
15
15
|
-- 並び順指定、この並び順から先頭1件を取得できる
|
16
16
|
order by ri2.date desc
|
17
17
|
) as X
|
18
|
+
```
|
19
|
+
|
20
|
+
## 追記
|
21
|
+
「サブクエリ内で括弧の外側のテーブルの情報は条件に指定できません」これが引っかかるのですが
|
22
|
+
select側に記述した場合カッコの外側の値を使って指定できます。
|
23
|
+
複数項目持ってくるとエラーになるのですが、項目が1つの場合ならサブクエリで処理できるはずです。
|
24
|
+
|
25
|
+
```sql
|
26
|
+
select f.horse_id,f.race_id,ri.date
|
27
|
+
,(
|
28
|
+
select top 1 ri2.date--,ri2.race_id ←これはエラー
|
29
|
+
from feature f2
|
30
|
+
inner join race_info ri2 on ri2.race_id = f2.race_id
|
31
|
+
-- 条件は質問文からはうまく読み取れないのでなんとなく
|
32
|
+
where f2.horse_id=f.horse_id
|
33
|
+
and ri2.date<ri.date
|
34
|
+
-- 並び順指定、この並び順から先頭1件を取得できる
|
35
|
+
order by ri2.date desc
|
36
|
+
) as date2
|
37
|
+
from feature f
|
38
|
+
inner join race_info ri on f.race_id = ri.race_id
|
39
|
+
|
18
40
|
```
|
2
追記
answer
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
apply句を使用すればよろしいかと思います。そのような場合に使います。
|
2
|
+
条件読み取って再度追記してみました。
|
2
3
|
|
3
4
|
```sql
|
4
5
|
select f.horse_id,f.race_id,ri.date,X.race_id2,X.date2
|
@@ -6,9 +7,11 @@
|
|
6
7
|
inner join race_info ri on f.race_id = ri.race_id
|
7
8
|
outer apply (
|
8
9
|
select top 1 ri2.race_id as race_id2,ri2.date as date2
|
9
|
-
from
|
10
|
+
from feature f2
|
11
|
+
inner join race_info ri2 on ri2.race_id = f2.race_id
|
10
12
|
-- 条件は質問文からはうまく読み取れないのでなんとなく
|
13
|
+
where f2.horse_id=f.horse_id
|
11
|
-
|
14
|
+
and ri2.date<ri.date
|
12
15
|
-- 並び順指定、この並び順から先頭1件を取得できる
|
13
16
|
order by ri2.date desc
|
14
17
|
) as X
|
1
誤字修正
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
from feature f
|
6
6
|
inner join race_info ri on f.race_id = ri.race_id
|
7
7
|
outer apply (
|
8
|
-
select top 1 race_id as race_id2,date as date2
|
8
|
+
select top 1 ri2.race_id as race_id2,ri2.date as date2
|
9
9
|
from race_info ri2
|
10
10
|
-- 条件は質問文からはうまく読み取れないのでなんとなく
|
11
11
|
where ri2.date<ri.date
|