日付が< = 1のすべての注文を数える必要があります。私はCOALESCE関数を使用します。これはDate1がnullになることがあるためです。SQL Date Diff Business Days
SELECT COUNT(*)
FROM Orders
WHERE DATEDIFF(dd,COALESCE(Date1, Date2),Date0) <= 1
営業日(月〜金)のみカウントできる方法はありますか?
ありがとうございました。
日付が< = 1のすべての注文を数える必要があります。私はCOALESCE関数を使用します。これはDate1がnullになることがあるためです。SQL Date Diff Business Days
SELECT COUNT(*)
FROM Orders
WHERE DATEDIFF(dd,COALESCE(Date1, Date2),Date0) <= 1
営業日(月〜金)のみカウントできる方法はありますか?
ありがとうございました。
)。
SELECT SUM(CASE WHEN DATEPART(dw, COALESCE(Date1, Date2)) BETWEEN 2 AND 6
THEN 1 ELSE 0 END)
FROM Orders
WHERE DATEDIFF(dd,COALESCE(Date1, Date2),Date0) <= 1
Calendarテーブルを使用して、すべての営業日を保存することができます。
または、次の簡単な数式を使用して、2つの日付間の営業日数を計算することができます。この式では、土曜日と日曜日は営業日ではないと仮定しています。 2つの与えられた日付が営業日であると仮定します。
これはすべて、通常の日数の差を計算してから、週の始まりごとにこの結果から2営業日を減算します。
例1
DECLARE @Date0 date = '2016-04-07'; -- Thursday
DECLARE @Date1 date = '2016-04-08'; -- Friday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
結果
BusinessDays
1
例2
DECLARE @Date0 date = '2016-04-08'; -- Friday
DECLARE @Date1 date = '2016-04-11'; -- Monday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
結果
BusinessDays
1
例3
DECLARE @Date0 date = '2016-04-08'; -- Friday
DECLARE @Date1 date = '2016-04-18'; -- Monday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
結果
BusinessDays
6
あなたのクエリは次のようになります。
SELECT COUNT(*)
FROM Orders
WHERE
DATEDIFF(day, COALESCE(Date1, Date2), Date0) -
DATEDIFF(week, COALESCE(Date1, Date2), Date0) * 2 <= 1
;
営業日を定義します。月〜金を意味しますか、クリスマスなどの祝日を除外する必要がありますか?クリスマスなどを除外する必要がある場合は、カレンダーテーブルでこれを定義する必要があります。 –
申し訳ありませんが、月曜日から金曜日が必要です – user3175024
あなたはSQL Serverを使用していると思います(それに合わせてタグ付けしてください)。そうであれば、 'DATENAME'関数を使って日付が週末にあるかどうかを調べることができます。 –