0

だから私は長いプログラミングの大暴れの終わりに来ており、乗り越えなければならない論理的なハードルが1つ残っています. 私のアプリケーションは、見積もり依頼の KPI を提示します。ビジネス リーダーは、これらの KPI を週ごとに分類するように要求してきました。それが完了すると、月ごとに分類するようにという要求が来ると思います。SQLクエリでこれを理解しました。これ
SELECT qpid FROM cpkpis WHERE DATEPART(ww, qpvalidfrom)=13 GROUP BY qpid;
により、合計を計算するためのqpidのリストが得られ、ドリルダウン用の実際の主キーが提供されます。
私が理解できないのは、私のC#コードから年の週の列挙を取得する方法です。私はGregorianCalandar Class特にを調べましたGetWeekOfYear Methodが、これらの値の列挙に問題があります。

私の質問は次のとおりです: 日付範囲が指定された場合、開始日と終了日の間の週の列挙を取得2013-01-14する2013-04-10にはどうすればよいですか?ints

4

3 に答える 3

3

このタスクと予想されるその他の要件を支援するには、日付テーブルが必要です。私がデータベースで行うのが最も難しいのは、そこにないデータを照会することです。

日付テーブルを照会できます。

Select Distinct DatePart(ww, dateField) as WeekNo
from DateTable
where dateField between '2013-01-14' and '2013-04-10';
于 2013-04-11T17:32:11.870 に答える
0

T-SQL では、次のようなものを使用できます。

DECLARE @StartDate DATE = '2013-01-14';
DECLARE @EndDate DATE = '2013-04-10';

WITH weekcte AS
     (SELECT DATEADD(dd, -1, DATEADD(wk, DATEDIFF(wk, 0, @StartDate), 0)) AS DateValue
       UNION ALL     
      SELECT DATEADD(wk, 1, DateValue)
        FROM weekcte
       WHERE DATEADD(wk, 1, DateValue) <= @EndDate )
SELECT DATEPART(ww, w.DateValue) AS 'Week No'
  FROM weekcte AS w;
于 2013-04-11T18:51:52.743 に答える