1

ストアド プロシージャでクロス適用を使用して、日付の範囲を個々の日付に拡張しています。

select *
from #tbl_tempOutPut as st
cross apply dbo.explodeDates(st.startdate,st.enddate) as dt

テーブル #tbl_tempOutPut は次のようになります。

ID  Des startdate   enddate     kindex      
A   att 2003-12-04  2004-01-03  1
A   att 2004-01-04  2004-02-03  1

関数dbo.explodeDatesは、以前に受け入れられた回答です。

私の問題は、クエリが永久に実行され、返されないことです。

どうもありがとう、

4

1 に答える 1

2

explodeDatesインライン テーブル値関数として書き直します。これはほぼ確実に大きな違いを生むでしょう。

CREATE FUNCTION dbo.explodeDates (
  @StartDate    char(10),
  @EndDate      char(10)
) RETURNS TABLE AS RETURN SELECT
  CONVERT(datetime,@StartDate)+n-1 AS [Date]
  FROM Numbers
  WHERE Number <= DATEDIFF(day,@StartDate,CONVERT(datetime,@EndDate)+1)
于 2012-05-22T19:36:23.860 に答える