2017-04-26 5 views
0

이 논리는 다음과 같습니다. 동일한 위치에서 Ser_request 번호가 동일하면 Max "Down time before Power"가있는 행을 고려하십시오. 업데이트해야하는 행은 최소 값으로 열 이름 ID입니다다른 열에서 동일한 값을 업데이트하는 방법은 무엇입니까?

나는 세 개의 새로운 열이 치 시작 날짜, 치 종료일, 치 DC 전력을 생성하고 repective 열에서 데이터를 삽입해야

  • downtime_start = 치 시작 날짜

    -downtime_end = 형용사의 종료 날짜

    -power_before_downtime = 치 DC 전원

나는 그것을 시도했지만 동일한 값을 그룹화하여 첫 번째 줄을 찾을 수 없습니다.

난 SQL 서버 2012

를이 내가 지금까지 시도 무엇을 사용하고 있습니다 :

select location,downtime_start , count(*) 
from dbo.TB1 
group by location,downtime_start , count(*) 
having count(*)>1 

이 쿼리 후 내가 TB1의 결과를 얻을 그리고 난 몰라 어떻게 그룹을하고 삽입 각 열의 값. |

ID | location | downtime_start  | downtime_end   | power_before_downtime| power_after_downtime| creation_time  | end_time 
     |ser_request | Adj Start date  | Adj end date   | Adj DC power 

1 | xyz.a | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16    | 13.67    |3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM| 0003  | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM |  14.16 

2 | xyz.a | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16 

: 어떤 도움이

을 감사

ID | location | downtime_start  | downtime_end   | power_before_downtime | power_after_downtime | creation_time  | end_time   | ser_request 
1 | xyz.a | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16     | 13.67    | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003 
2 | xyz.a | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16     | 13.67    | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003 
3 | xyz.a | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16     | 13.67    | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003 

출력 테이블이 같은이어야 감사합니다 13.67 | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003
| 0 | 0 | 0

3 | xyz.a | 3/8/2017 2:00:00 PM| 3/10/2017 8:00:00 AM | 14.16 

| 13.67 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003 | 0 | 0 | 당신이 데이터를 선택해야하는 경우 0

+0

당신은 MySQL의 또는 MS SQL 서버를 사용하고 사용합니까? (관련되지 않은 제품에 태그를 지정하지 마십시오.) – jarlh

+1

사진의 작은 텍스트를 읽을 수 없습니다. (대부분의 사람들은 이미지가 아닌 형식의 텍스트를 원합니다 ...) – jarlh

+0

MS SQL 2010을 사용 중입니다 –

답변

1
UPDATE T 
SET 
[Adj Start date] = downtime_start, 
[Adj end date] = downtime_end, 
[Adj DC power] = power_before_downtime 
FROM (
    SELECT [Adj Start date], [Adj end date], [Adj DC power], downtime_start, downtime_end, power_before_downtime, 
     rn = ROW_NUMBER() OVER (PARTITION BY downtime_start, downtime_end ORDER BY id) 
    FROM dbo.TB1 
) T 
WHERE rn = 1 

, CASE WHEN rn = 1 THEN downtime_start ELSE 0 END

+0

세 개의 열 모두에 대해 inavlid 열 이름으로 오류가 발생했습니다. –

+0

@ Lookup_for_answers 내 쿼리를 편집하고 누락 된 열 다섯 개를 추가했습니다. 오류가 나타나면 전체 오류 메시지를 입력하십시오. –

관련 문제