각 레코드의 시작 날짜 값인 첫 번째 날짜로 각 날짜의 값으로 구분해야하는 고유 식별자, 시작 날짜 및 두 개의 세미콜론으로 구분 된 문자열을 가진 레코드가있는 테이블이 있습니다.루핑이 좋지 않으므로 어떻게해야합니까?
현재 테이블 (16K 레코드 +)의 각 레코드를 탐색하는 While 루프를 사용하고 While 루프를 사용하는 분할 함수를 사용하고 있으므로 모든 종류의 나쁜 작업을 수행하고 있습니다. 분할 기능은 Oskar Austegard의 dbo.fnSplit
기능을 기반으로합니다.
필자는 분리를 위해 루프를 사용하는 것이 성능에 좋지 않지만 이러한 구분 된 문자열은 최대 100 개의 항목을 가지고있는 방법에 대해 읽었습니다. 나는 CROSS APPLY
에 대해 배우려고 애를 쓰고 있으며, 작성한 여러 SP에 CTE를 사용하고 있습니다. 그러나 CTE를 사용하면 효과가 있을지, 어떻게 작동하는지 확실하지 않습니다. 특히 CROSS APPLY 또는 다른 APPLY에 대해 확신 할 수 없습니다.
누군가가 기꺼이 도움을 청하면 내 쿼리와 혼란 스플릿 기능을 기꺼이 게시 할 것입니다.
특히 현재 코드뿐 아니라 일부 샘플 데이터를 공유 할 수 있습니까? – Phylyp
샘플 데이터로 설명 된 세미콜론으로 구분 된 문자열에서 분리 된 날짜 값을 사용하는 방법에 대해 좀 더 자세히 설명합니다. – Phylyp
이 기사를 확인하십시오. 그것은 SQL에 대해 꽤 잘 이해하고 있어야하지만 아마도 당신의 목적에 맞게 수정할 수 있습니다. 또한 코드를 표시하면 항상 도움이됩니다! http://www.sqlservercentral.com/articles/Tally+Table/72993/ – Jeremy