前の期間に遅刻した学生を出席データベース (SQL Server 2008) から取得しようとしています。期間出勤は に保存されATT.A1, ATT.A2 ... ATT.A7
ます。午前 9 時から 1 時間ごとに実行するジョブをスケジュールし、遅刻した生徒を引き取りたいのですが、コードがわかりません。
これが私のコードです(疑似コード):
Declare @Period varchar(6)
Set @Period = 'att.a' + Cast((DATENAME(hour, GETDATE()) - 8) as varchar(1))
Select SC, SN, DT, @Period as Period, ATT.A1
From ATT
Where SC = '9' and @Period = 'T'
and DT = DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
これを使用すると、結果が得られません。@Period = 'T'
Where 句から削除すると、次のようになります。
9 5177 2012-08-24 00:00:00.000 att.a1 T
9 5211 2012-08-24 00:00:00.000 att.a1
9 5225 2012-08-24 00:00:00.000 att.a1 T
9 5229 2012-08-24 00:00:00.000 att.a1 T
9 5235 2012-08-24 00:00:00.000 att.a1 V
9 5242 2012-08-24 00:00:00.000 att.a1 T
9 5268 2012-08-24 00:00:00.000 att.a1
ステートメントと句で使用する場合、 のリテラル文字列値を使用@Period
していることはわかっていますが、 asの値を使用するにはそれが必要です。SELECT
WHERE
@Period
@Period
Table.Column
したがって、9 :00 からATT.A1
、10:00 からATT.A2
... 15:00 から選択し、ATT.A7
毎回 ATT.A# = 'T' かどうかを比較します。
それが明確であることを願っています。
ありがとう、アンソニー