間の記録を見たときに、次のように私の問題がある:SQL ServerのSUM DATEDIFFとNULL二つの日付
私は列を持つ(表と呼ばれる)のテーブルを持っている:ID、イベント、STARTDATE、終了日は
STARTDATEが行きます1900年1月1日から今日まで、enddateも同様です。イベントは任意の文字列であり、各IDは時間の経過とともに複数のイベントを開始したり終了したりします(ただし、一度に1つのイベントのみです)。
1989-01-01と2000の間の日付のレコードを取得する場合-01-01。私たちは日付の違いを合計して、各IDが何らかの出来事をしているのに費やした週の総数を得たいと思っています。
私が持っている問題は、興味がありますので、その終了日はnullです。
私は現在
SELECT
id,
ISNULL(enddate, 2000-01-01 sum(datediff(weeks, startdate, enddate)) AS wksdoingstuff
WHERE
event IN ('something', 'somethingelse'. 'anotherthing')
AND BETWEEN 1989-01-01 AND 2000-01-01
GROUP BY
id
をしようとしています
は私が何をした後:私は明確なIDの行をしたい
、それぞれが(現時点では私のコードを、彼らが興味
のイベントにあった何週間分のカウントを持っていますなく、かなり私は何そこに書いてある)私は各IDごとに複数の行を与えています。
あなたは私たちを示してきたコードを実行することができることにも、近くではありません。 ** runnable **コードの自己完結型の例を作成してみてください(実際には 'FROM'節を使ってテーブルの変数にデータを入力し、実際にそれからクエリを実行することをお勧めします。 'ISNULL'行など) –
また、あなたが探している出力を明確に定義する必要があります。 'DATEDIFF'は*遷移*を数えます。あなたが'週 'ではなく' week'を意味すると仮定した場合、最初のものが土曜日で2番目のものが2日目の場合は1日だけ2を返します日曜日です。それはあなたが望む行動ですか?ここでは*部分的な週数を考慮する必要がありますか? –
はい、部分的な振る舞いは分析には問題ありません。さらに、私はいつもデータが合理的かどうかを確認することができます。 私のコードは実行されないと認識しています。私はサーバーにアクセスするコンピュータではありません。私はインターネットにアクセスできないので、回答とメモを書き留める必要があります。それ。 –