2011-11-13 2 views
0

나는 A.라는 이름의 테이블을 가지고 있는데, 하나의 필드가있는 레코드가 하나뿐입니다. 이것은 number라는 정수입니다. A.number 레코드가있는 뷰를 만들고 싶습니다. 각각은 A.number보다 작은 숫자 중 하나입니다. 예를 들어정수보기를 만드시겠습니까?

:

선택 A.number -----> 5

뷰 레코드 5 0 1 2 3 4

PS를 표시한다 : 이것은 실제 문제는 I 많이 단순화했습니다. 진짜 문제는 고정 된 기간에 예산을 매일 나누는 것과 같습니다.

+0

이 숙제입니까, 아니면 어딘가에서 온 퍼즐입니까? –

+0

그들 중 누구도. 진짜 문제. 주요 문제는 더 복잡합니다. 나는 그것을 단순화했다. – Masoud

답변

1

이것은 숙제일지도 모르는 것처럼 들리므로 코드를 철저히 제공하는 데주의해야합니다.

질문을 해결하는 방법에 대한 지침을 제공 할 수 있습니다. 각 반복에서 이전 반복에 하나를 추가하는 재귀 적 CTE를 사용합니다. 그냥 당신이 번호를 확인 할 수 있습니다 경우> (101) 당신은 원래 테이블에 뷰를 키에 스칼라 서브 쿼리를 사용할 수있는 MAXRECURSION 옵션을 설정해야합니다 :


WITH numbers (n) AS (
    SELECT 0 UNION ALL 
    SELECT 1 + n FROM numbers WHERE n < (select number from a) -1) 
SELECT n FROM numbers 
OPTION (MAXRECURSION 500) --example 
+0

숙제가 아닙니다. 편집 된 게시물을 참조하십시오. – Masoud

+0

답변을 이해할 수 없습니다. 보기에서 반복? – Masoud

+0

이것이 숙제가 아니라는 것을 당신의 말로 표현합니다. –

0

경우 테이블의 수 2048 <을하고 당신이 SQL 서버에있는 것, 이것은 당신을 위해 작동합니다 :

당신이 더 높은 제한을 요구하거나하는 경우 응용 프로그램에 맞게 적절한 크기와 자신의 번호 테이블을 만드는 것이 좋습니다 수 또는
CREATE VIEW MyView AS 
    SELECT number 
    FROM master..spt_values 
    WHERE type = 'p' 
     AND number < (SELECT value FROM yourTable) 

이 기능을 제공하는 SQL Server에는 없습니다. Here은 "Numbers 테이블"을 편리하게 사용하려는 아이디어에 대한 블로그 게시물에 대한 링크입니다.

관련 문제