ms sql 쿼리 여쭤봅니다. 0 2 586

by 열심노력하는 초보 [SQL Query] update set [2018.10.19 17:14:22]


ms sql 서버 쿼리 문의드립니다. 

A테이블

month | day | hour | 가격1 | 시간수량 | 합계 |

   1       1      1        30          20       150

   2       2      2        55           3       200

   1       2      1       150.5       30       100

......

B테이블(아래와 같이 월별 데이터가 이어짐)

month | day | hour | mintue | 가격1 | 누적수량 | 합계 |

   1        1      1        0         20         20        50

   1        1      1       10         40         22       50

   1        1      1       30         40         35       10

   1        1      1       40         20         40       40

   1        1      2        0         50         11       150

   1        1      2       10         60        12       200

   1        1      2       30         50        13       100

   1        1      2       40         60        14       100

.....

쿼리

아래의 조건이 같을 경우 A테이블 열의 값 month, day, hour을 B테이블 month, day, hour의 값으로

변경하여 넣고 싶습니다.

 

조건은 B테이블 month =1, day = 1, hour =1, mintue =0 ~40까지 가격1 열(column)4개의 평균값(avg)이

A테이블 가격1의 값과 같고(And),

B테이블 month =1, day = 1, hour =1, mintue =0 ~40까지 누적수량 열(column) 중 시작(mintue =0)과 끝(mintue = 40)의 값 차(빼기)를 한 값이 A테이블 시간수량 의 값이 일치할 경우

 

A테이블 month, day, hour를 B테이블 month, day, hour 값으로 변경하고 싶습니다. 

 

생각한 예)

update ATable a

set a.month = b.month, a.day = b.day, a.hour = b.hour

where a.가격1 = sum(b.가격1) ....?

 

SQL을 처음 접하고 책으로 보다보니 어떻게 해야 될지 아직 감이 잡히지 않습니다. 

도움 요청드립니다.

by 마농 [2018.10.22 08:56:55]
UPDATE a
   SET a.month = b.month
     , a.day   = b.day 
     , a.hour  = b.hour
  FROM A테이블 a
 INNER JOIN
       (SELECT month, day, hour
             , AVG(가격1) 가격1
             , MAX(누적수량) - MIN(누적수량) 시간수량
          FROM B테이블
         GROUP BY month, day, hour
        ) b
    ON a.가격1 = b.가격1
   AND a.시간수량 = b.시간수량
;

 


by 열심노력하는 초보 [2018.10.22 14:27:57]

도움 주셔서 정말 감사합니다.

적용해보도록 하겠습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입