2012-10-19 3 views
2

DESC 그룹의 최소값으로 MD_ID 열을 업데이트하려고합니다.
예를 들어 DESC = Language가 min (21, 163, 287) = 21로 MD_ID = 21이되도록 모든 행을 원합니다. 단순화하기 위해, 항상 SOURCE = 1과 연관된 MD_ID입니다.SQL 그룹의 최소 값을 가진 열을 업데이트하십시오.

데이터는 다음과 같습니다

MD_ID|SOURCE|DESC   |MSG |SEGMNT|FIELD 
    21 |1  |Language  |A11 |PID |33 
163 |2  |Language  |A11 |PID |33 
287 |3  |Language  |A11 |PID |33 
    22 |1  |Sex   |B22 |MSH |8 
145 |2  |Sex   |B22 |MSH |8 
171 |3  |Sex   |B22 |MSH |8 
    23 |1  |Marital Status |C33 |NK1 |16 
145 |2  |Marital Status |C33 |NK1 |16 
289 |3  |Marital Status |C33 |NK1 |1 
    24 |1  |Religion  |D44 |GT1 |7 
167 |2  |Religion  |D44 |GT1 |7 
292 |3  |Religion  |D44 |GT1 |7 

나는 같이 할 필요 :

MD_ID|SOURCE|DESC   |MSG |SEGMNT|FIELD 
    21 |1  |Language  |A11 |PID |33 
    21 |2  |Language  |A11 |PID |33 
    21 |3  |Language  |A11 |PID |33 
    22 |1  |Sex   |B22 |MSH |8 
    22 |2  |Sex   |B22 |MSH |8 
    22 |3  |Sex   |B22 |MSH |8 
    23 |1  |Marital Status |C33 |NK1 |16 
    23 |2  |Marital Status |C33 |NK1 |16 
    23 |3  |Marital Status |C33 |NK1 |1 
    24 |1  |Religion  |D44 |GT1 |7 
    24 |2  |Religion  |D44 |GT1 |7 
    24 |3  |Religion  |D44 |GT1 |7 
+2

가 해당 그룹 * 무엇을 의미합니까 *? 편집 – RedFilter

+0

형식을 다시 지정하더라도 DESC는 ORA에서 예약 된 키워드입니다. 테스트 해 보셨습니까? – amphibient

+0

을 클릭하여 – amphibient

답변

4
UPDATE YourTable t 
    SET MD_ID = (SELECT MD_ID 
        FROM YourTable t2 
        WHERE t2.DESC = t.DESC 
         AND t2.SOURCE = 1) 
+0

wow man ... 그것은 굉장히 빠르다 –

+0

물론! 대단히. 나는 월요일에 그 벌레를 줄 것이고, 그것이 모두 어떻게되는지에 관해 당신에게 알릴 것이다. – Nimbocrux

+0

Joe, htanks 대단히 ~ – Nimbocrux

관련 문제