WITH t AS ( SELECT 1 idx, '사과' nm, 20000 amt UNION ALL SELECT 2, '사과', 43200 UNION ALL SELECT 3, '배' , 30000 UNION ALL SELECT 4, '배' , 20000 ) SELECT idx , nm , amt , CASE ROW_NUMBER() OVER(PARTITION BY nm ORDER BY idx) WHEN 1 THEN nm END nm_1 , CASE WHEN LAG(nm) OVER(PARTITION BY nm ORDER BY idx) = nm THEN NULL ELSE nm END nm_2 , NULLIF(nm, LAG(nm) OVER(PARTITION BY nm ORDER BY idx)) nm_3 FROM t ;