2014-06-05 1 views
-1

아이템 목록과 날짜 범위를 사용하면 날짜 사이에 모든 항목이있는 테이블이 필요합니다. 십자가 조인을 사용해야한다고 생각합니다. 그러나 범위에서 날짜를 어떻게 얻을 수 있는지 모르겠습니다. 샘플 데이터 :아이템 목록과 날짜 범위 사이의 데카르트 제품

Item 
123456 
546578 
644821 

시작 날짜 : 2014-06-01 종료 날짜 :

Date   Item 
2014-06-01 123456 
2014-06-01 546578 
2014-06-01 644821 
2014-06-02 123456 
2014-06-02 546578 
2014-06-02 644821 
2014-06-03 123456 
2014-06-03 546578 
2014-06-03 644821 

사람이주고받는 날 수있는 도움 :

2014-06-03 나는이 결과를해야합니까?

+1

인터넷 검색 "SQL Server Cartesian Product"를 사용해 보셨습니까? 첫 번째 결과는 정확히 필요한 것입니다. – cadrell0

+0

아마도 내 결과는 당신의 결과가 아닙니다. 그것은 내가 한 첫번째 일입니다. 하지만 어쨌든 고맙습니다. 더 열심히 노력하겠습니다 ... – PJLG

+0

http://stackoverflow.com/questions/1378593/get-a-list-of-dates-between-two-dates-using-a-function for 시작. – podiluska

답변

0

당신은 다음과 같이 수행 할 수 있습니다 (이것은 MS SQL 서버에서의) :

DECLARE @items TABLE (item INT) 
INSERT INTO @items 
     (item) 
VALUES (123456 ),(546578),(644821) 

DECLARE @startdate DATETIME = '2014-06-01' 
DECLARE @enddate DATETIME = '2014-06-03' 

;WITH mycte AS 
(
    SELECT @startdate DateValue 
    UNION ALL 
    SELECT DateValue + 1 
    FROM mycte 
    WHERE DateValue + 1 <= @enddate 
) 

SELECT DateValue, item 
FROM mycte 
CROSS JOIN @items 
OPTION (MAXRECURSION 0) 

참조 - 댄 앳킨슨의 포스트 here를 사용은.

+0

고마워요 @ 데이브, 필요한 모든 것입니다! – PJLG