매일 한번씩 테이블에서 한 칼럼의 값을 검사하여 중복되지 않는 데이터를 다른 테이블에 복사하고 싶습니다.
1 | 콤보 | 10 | 25000 |
2 | 콤보 | 20 | 25000 |
3 | 아이템 | 1 | 25000 |
4 | 아이템 | 2 | 25000 |
5 | 점수 | 1000 | 25000 |
6 | 점수 | 2000 | 25000 |
7 | 돈 | 50 | 25000 |
8 | 돈 | 1500 | 25000 |
9 | 거리 | 1 | 25000 |
10 | 거리 | 10 | 25000 |
위에 테이블에서 콤보, 아이템, 점수가 기재되어 있는 칼럼을 검사해서 저 칼럼들이 중복되지 않게 랜덤한 데이터들을 아래와 같이 다른 테이블에 넣으려고 합니다.
번호 | 구분 | 조건 | 값 |
1 | 콤보 | 10 | 25000 |
4 | 아이템 | 2 | 25000 |
5 | 점수 | 1000 | 25000 |
7 | 돈 | 50 | 25000 |
9 | 거리 | 1 | 25000 |
그래서 같은 내용의 칼럼이 들어가지 않기 위해 중복 검사를 하려고 distinct(구분)을 쓰니 오류가 생기거나 중복검사를 하지 않고 값을 전부 복사합니다. 어떻게하면 중복되지 않고 다른 테이블에 값을 복사할 수 있을까요? 매일 특정 시간에 이 것을 수행하는 것은 SQL 에이전트를 쓰면 된다고 나오는데 그때 실행할 저장 프로시저를 만들려다 보니 이런 문제가 생기네요. 아래는 사용한 구문입니다.
INSERT TB_INFO_DAY(번호, 구분, 조건, 값)
SELECT 번호, DISTINCT(구분), 조건, 값 FROM TB_INFO_MISSION
<- 이렇게 하면 중복 검사가 되지 않습니다.
INSERT TB_INFO_DAY(번호, 구분, 조건, 값)
SELECT 번호, DISTINCT(구분), 조건, 값 FROM TB_INFO_MISSION GROUP BY 구분
<- 이렇게 하니 다른 항목이 집계 함수나 GROUP BY 이 없다고 나옵니다.
고수님들의 조언 좀 부탁드립니다ㅠㅠ
Comment 1
-
Hisory
2014.05.19 09:47
아래 쿼리를 대충 만들어 봤습니다....
원하시는 쿼리 일지는 모르겠네여
Declare @Tb Table
(
번호 int
, 구분 varchar(100)
, 조건 varchar(10)
, 값 int
)
insert @Tb (번호 , 구분 , 조건 , 값 )
values ('1','콤보','10','25000')
,('2','콤보','20','25000')
,('3','아이템','1','25000')
,('4','아이템','2','25000')
,('5','점수','1000','25000')
,('6','점수','2000','25000')
,('7','돈','50','25000')
,('8','돈','1500','25000')
,('9','거리','1','25000')
,('10','거리','10','25000')
Select T1.* From @Tb As T1
Inner Join
(
Select max(번호) As 번호,구분 From @Tb
Group By 구분
) as t2
on t2.번호 = t1.번호
And t2.구분 = t1.구분