헤더에 대해 유감스럽게 생각합니다. 내가 원하는 것을 설명하는 올바른 방법을 찾을 수 없습니다. 이유는 무엇입니까? 문제 :다른 필드의 값에 따라 날짜를 설정하십시오.
나는 다음과 같은 구조와 몇 가지 예를 들어 데이터 테이블을 가지고 :
CREATE TABLE [dbo].[set_dates](
[Split3_ID] [int] IDENTITY(1,1) NOT NULL,
[CU_ID] [int] NULL,
[order_id] [int] NULL,
[st_date] [datetime] NULL,
[sku] [int] NULL,
[Priority] [int] NULL,
[Delay] [int] NULL,
[CourseDate] [datetime] NULL
) ON [PRIMARY]
GO
INSERT INTO [dbo].[set_dates]
([CU_ID]
,[order_id]
,[st_date]
,[sku]
,[Priority]
,[Delay])
VALUES
(25721,7907,GETDATE(),63,4,4),
(25718,7910,GETDATE(),63,4,4),
(25718,7910,GETDATE(),6,5,2),
(25719,7908,GETDATE(),6,5,2),
(25719,7908,GETDATE(),57,4,4),
(25719,7908,GETDATE(),52,8,2)
GO
그래서 내 표는 다음과 같아야합니다
Split3_ID CU_ID order_id st_date sku Priority Delay CourseDate
1 25721 7907 2014-07-08 18:04:30.973 63 4 4 NULL
2 25718 7910 2014-07-08 18:04:30.973 63 4 4 NULL
3 25718 7910 2014-07-08 18:04:30.973 6 5 2 NULL
4 25719 7908 2014-07-08 18:04:30.973 6 5 2 NULL
5 25719 7908 2014-07-08 18:04:30.973 57 4 4 NULL
6 25719 7908 2014-07-08 18:04:30.973 52 8 2 NULL
것은 지금 달성하고 싶은 무엇 Cour을 설정하는 것입니다. order_id, priority 및 delay ... 세 개의 필드에 따라 seDate ... more :
동일한 order_id를 가진 행이 하나있는 경우 CourseDate = st_date, 동일한 order_id를 가진 여러 행이있는 경우 날짜 우선 순위에 따라 입력해야합니다.
Split3_ID CU_ID order_id st_date sku Priority Delay CourseDate
1 25721 7907 2014-07-08 18:04:30.973 63 4 4 2014-07-08
2 25718 7910 2014-07-08 18:04:30.973 63 4 4 2014-07-08
3 25718 7910 2014-07-08 18:04:30.973 6 5 2 2014-07-12
4 25719 7908 2014-07-08 18:04:30.973 6 5 2 2014-07-12
5 25719 7908 2014-07-08 18:04:30.973 57 4 4 2014-07-08
6 25719 7908 2014-07-08 18:04:30.973 52 8 2 2014-07-14
: 최저 우선 순위는 첫째 CourseDate = st_date, 다음에 더 우선 순위가 이전 항목에서 지연 + st_date 것 ... 등등 ... 위의 예에서
, 결과는 다음과 같이해야 될 것이다
이것을 수행 할 수있는 방법이 있습니까? 사전 정렬없이 동일한 order_id로 최대 10 개의 주문을 받았으므로 CASE 문을 사용한 첫 번째 시도는 많은 글을 작성했습니다.
두 번째 중요한 문제는 동일한 order_id에서 때때로 같은 우선 순위의 주문이있을 수 있다는 것입니다.)
안녕 나는 행이 3 열 그룹에서 ORDER_ID에 따라 그룹화 볼 수는 I 중간 로우는 가장 낮은 우선 순위를 가지며, 따라서 st_date 등이있다 볼 수 7,908을 ORDER_ID 코스 날짜. 위의 행 (Split3_ID = 4)은 우선 순위가 낮은 행이 4의 지연을 갖는다는 사실로부터 2014-07-12의 코스 날짜를 받습니까? Split3_ID = 6은 Split3_ID 4와 5의 결합 된 지연으로 2014-07-14의 CourseDate를 얻고 있습니까? – russ
그래, 그게 어떻게 작동하는지 ... 해결책은 이미 많이 발견되었지만 (매우 간단한 업데이트 문은 아래를 참조하십시오.) – user2301990