特定の選択日付のリセット日を計算するためにmax集計関数を使用するクエリがあります。有効なフィールドを持つテーブルvp_Accrualがあります。選択日付がeffectivedateフィールドに渡され、 Max関数を使用すると、リセット日が計算されます。このクエリは、特定の選択日付についてのみ結果を与えます。これは、渡された選択日付に基づいてリセット日付を計算します。sql with group with日付と日付の範囲
日付の範囲の日付をリセットするように修正したい Below Queryは、1月1日の日付で1人の出力を出力します。
我々は、それが代わりに一つだけ選択日付の複数の選択日付の結果が得られますようにクエリを変更する必要があります。
@electendeddateと@enddateの間にeffectivedateとして追加@enddateフィールドを追加してみました。
しかし、そのアプローチは正しいとは思いません。
私は1月4日に、このような1月1日などの日付の範囲を、渡したい、それが
以下のように各日付の出力を与える必要があります[私は十分Repuationポイントを持っていけないよう画像をリンクとして追加される] [https://i.stack.imgur.com/0HSX1.jpg]
以下は使用されるクエリです。
DECLARE @selectionDate datetime
SET @selectionDate = CONVERT(nvarchar(10), DATEADD(dd, 0, CAST('01/01/2017' AS datetime)), 101)
SELECT
e.personnum,
ac.name as Accrul_Code,
@selectionDate as Selection_DATE,
CASE
WHEN MAX(va.effectivedate) IS NULL THEN CAST('1/1/1753' AS datetime)
ELSE MAX(va.effectivedate)
END AS resetdate
FROM vp_employeev42 e WITH (NOLOCK)
INNER JOIN accrualprofile ap
ON e.accrualprflname = ap.name
INNER JOIN accrualprofilemm apm
ON apm.accrualprofileid = ap.accrualprofileid
INNER JOIN accrualrule ar
ON apm.accrualruleid = ar.accrualruleid
INNER JOIN accrualcode ac
ON ac.accrualcodeid = ar.accrualcodeid
LEFT OUTER JOIN vp_accrual va
ON va.accrualcodeid = ar.accrualcodeid
AND e.personid = va.personid
AND accrualtrantype IN (3, 11)
AND va.effectivedate <= @selectionDate
WHERE
ac.NAME IN ('FT PTO','LOC','EPT - 5','PT PTO','EPT')
AND va.DISQUALIFIEDSW != 1
and e.PERSONNUM='00152'
GROUP BY e.personnum,
ac.name
このクエリ
質問している内容が不明です。また、それはあなたのテーブル構造、データサンプルと期待される結果を転写する画像への無礼な投稿リンクとみなされます。あなたを助けるのは簡単でしょう。 – Horaciux
私は画像を直接追加することはできませんが、私はmin8mum 10の評判ポイントをstackoverflow.soにする必要があるので、画像はリンクとして追加されます。 –
あなたは画像を求められていません。消耗品のテストデータを要求されています...テーブルを作成し、そのテストデータに基づいてステートメントと予想される結果を挿入します。これにより、人々は可能なソリューションを作成してテストすることができます。 https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –