回答編集履歴

3

追記

2019/09/02 02:58

投稿

sousuke
sousuke

スコア3828

test CHANGED
@@ -33,3 +33,47 @@
33
33
  ) as X
34
34
 
35
35
  ```
36
+
37
+
38
+
39
+ ## 追記
40
+
41
+ 「サブクエリ内で括弧の外側のテーブルの情報は条件に指定できません」これが引っかかるのですが
42
+
43
+ select側に記述した場合カッコの外側の値を使って指定できます。
44
+
45
+ 複数項目持ってくるとエラーになるのですが、項目が1つの場合ならサブクエリで処理できるはずです。
46
+
47
+
48
+
49
+ ```sql
50
+
51
+ select f.horse_id,f.race_id,ri.date
52
+
53
+ ,(
54
+
55
+ select top 1 ri2.date--,ri2.race_id ←これはエラー
56
+
57
+ from feature f2
58
+
59
+ inner join race_info ri2 on ri2.race_id = f2.race_id
60
+
61
+ -- 条件は質問文からはうまく読み取れないのでなんとなく
62
+
63
+ where f2.horse_id=f.horse_id
64
+
65
+ and ri2.date<ri.date
66
+
67
+ -- 並び順指定、この並び順から先頭1件を取得できる
68
+
69
+ order by ri2.date desc
70
+
71
+ ) as date2
72
+
73
+ from feature f
74
+
75
+ inner join race_info ri on f.race_id = ri.race_id
76
+
77
+
78
+
79
+ ```

2

追記

2019/09/02 02:58

投稿

sousuke
sousuke

スコア3828

test CHANGED
@@ -1,4 +1,6 @@
1
1
  apply句を使用すればよろしいかと思います。そのような場合に使います。
2
+
3
+ 条件読み取って再度追記してみました。
2
4
 
3
5
 
4
6
 
@@ -14,11 +16,15 @@
14
16
 
15
17
  select top 1 ri2.race_id as race_id2,ri2.date as date2
16
18
 
17
- from race_info ri2
19
+ from feature f2
20
+
21
+ inner join race_info ri2 on ri2.race_id = f2.race_id
18
22
 
19
23
  -- 条件は質問文からはうまく読み取れないのでなんとなく
20
24
 
25
+ where f2.horse_id=f.horse_id
26
+
21
- where ri2.date<ri.date
27
+ and ri2.date<ri.date
22
28
 
23
29
  -- 並び順指定、この並び順から先頭1件を取得できる
24
30
 

1

誤字修正

2019/09/02 02:37

投稿

sousuke
sousuke

スコア3828

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  outer apply (
14
14
 
15
- select top 1 race_id as race_id2,date as date2
15
+ select top 1 ri2.race_id as race_id2,ri2.date as date2
16
16
 
17
17
  from race_info ri2
18
18