データベースに存在する一連の日付とそれに対応する値(あれば)を取得しようとしています。SQL追加の参照値で順次日付を選択
今日(getDate()を使用している日付)と日数(整数)の2つのパラメータがあります。この例では、その日の値10を使用しています。
コードは、今日から10日間の順次日付を取得する:
SELECT top 10 DATEADD(DAY, ROW_NUMBER()
OVER (ORDER BY object_id), REPLACE(getDate(),'-','')) as Alldays
FROM sys.all_objects
が、私は今、またはタイムテーブルに存在しない場合がありシーケンシャル日コード内のそれぞれの日のためのいくつかの値をルックアップする必要があります(特に明記しない限り、すべての日付で8時間とする)。検索はrecordDateTimeフィールドに行われます。その日のテーブルcap_timeに "時間"値がない場合は、デフォルト値の8を時間数として返す必要があります。以下のようなものである必要があり、次の10日間
SELECT u.FullName as UserName, d2.department,
recordDateTime, ISNULL(hours,8) as hours
FROM cap_time c
left join user u on c.userID = u.userid
left join dept d2 on u.deptID = d2.DeptID
WHERE c.userid = 38 AND u.deptID = 1
私の最終的な結果:ここでは、ベースのクエリです(シーケンシャル) 日は、部門は、ユーザー名は、営業時間
の数が、私はこの使用してTSQLと達成することができます私はこれを単一のステートメントで行うことができるかどうかを確認したいと思います。どんな助けもありがとうございます。
あなたは次の10日間のリストを取得したいと思っていますが、レコードがあるかどうかに関わらず、それらの日付+その日に存在する可能性がありますか?それとも、それが存在する場合は、今後10日間で日付が必要なのですか? – ZLK
はい、正確です。レコードがない場合は、デフォルトの8時間を返します。 – KMBonin