반응형

select ROW_NUMBER() OVER(ORDER BY 컬럼명) as RowNum 

   from 테이블 

반응형
반응형

SELECT acp_date, ent_date, DATEDIFF(day, ent_date, acp_date) AS NumberOfDays
FROM TEST

여기서 acp_date, ent_date 는 ‘yyyymmdd’  형식의 nvarchar였고 결과는

일수로 계산되어 나온다.

acp_date   ent_date     NumberOfDays
20070606    20070505     32
20050728    20030101     939

반응형
반응형

DB에서 정보를 검색해야 되는데 이상하게 검색이 안된다..

DB가 char(n) 타입이라 데이터 뒤에 공백이 붙는다.
예를들어 ‘aaaa’ 라는 데이터를 넣으면 ‘aaaa           ‘ 라는 형식으로 입력이 된다.(char 니까 당연…)
하지만 검색할때는 ‘aaaa’, ‘aaaa ‘, ‘aaaa     ‘… 다 되는게 정상이다…
그런데 이상하게 검색이 안되는 넘이 있었다…

문제의 발단은 txt 파일에서 정보를 읽어서 자동으로 인설트 시키는 기능이 있었는데 이 txt 파일에 aaaa 뒤에 탭 문자가 들어가 있었다.
실제로 메모장으로 열어서 커서를 이동해 보면 탭 문자 간격만큼 이동한다..
이거 때문에 삽질 하다가 수정한 결과를 적어 본다.

우선 MSSQL 에서 Tab 문자는  CHAR(9) 다.
줄바꿈 문자는 CHAR(10) 혹은 CHAR(10)+CHAR(13) …

해결..
UPDATE [TABLE] SET value = REPLACE(value, CHAR(9), ”)  

여기서CHAR(9) 는 문자열이 아니므로 ‘CHAR(9)’ 로 적으면 안댄다.

반응형
반응형

– 테이블 목록 보는 법
select * from information_schema.tables where table_type = ‘BASE TABLE’


– 테이블 목록과 행 갯수 보는 법
SELECT o.name, i.rows FROM sysindexes i INNER JOIN sysobjects o ON i.id = o.id WHERE i.indid < 2 AND o.xtype = ‘U’ ORDER BY o.name


– 테이블 리스트 뷰를 만들자. (테이블과 행의 갯수 알려줌)
create view tablelist
as
SELECT o.name, i.rows FROM sysindexes i INNER JOIN sysobjects o ON i.id = o.id WHERE i.indid < 2 AND o.xtype = ‘U’ ORDER BY o.name


– 테이블 마스터의 테이블 갯수 xtype이 ‘u’는 테이블 ‘p’는 프로시저
select * from table_mst where xtype = ‘u’


– 테이블 마스터의 테이블과 시스템 테이블에서 같은것만 행의 갯수 뿌림
select l.name, l.rows
from tablelist l, table_mst m
where l.name = m.table_name

반응형
반응형

DB의 조회하려는 컬럼명이 있는 테이블을 찾는 법


select distinct a.name
from sysobjects a, syscolumns b
where a.id = b.id and b.name like ‘%add%’


반응형
반응형

[기초문법] 컬럼 리스트 얻기  INFORMATION_SCHEMA.COLUMNS)


select * from INFORMATION_SCHEMA.COLUMNS where table_name = ‘테이블명’

select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = ‘테이블명’

반응형
반응형

MS-SQL information_schema.columns

select * from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = ‘테이블명’

필드 및 테이블 속성 셀렉트

반응형
반응형

// 뷰 테이블 내용
select S.EMP_NO as [사원번호], I.EMP_NM as [사원이름], S.YYMM as [년월], sum(S.REL_PAY_AMT) as [실제받은 금액]
 from IN30100 S, IN10100 I" & _
 where S.EMP_NO = I.EMP_NO AND S.ON_WORK_YN='Y' group by S.YYMM, S.EMP_NO, I.EMP_NM

select [사원번호], [사원이름], avg([실제받은 금액]) as [3개월 평균 봉급] from test_view
 where [년월] = (select LEFT(convert(varchar(30),dateadd(mm,-1, getdate()),112),6))
 or [년월] = (select LEFT(convert(varchar(30),dateadd(mm,-2, getdate()),112),6))
 or [년월] = (select LEFT(convert(varchar(30),dateadd(mm,-3, getdate()),112),6))
 group by [사원이름], [사원번호]"
select S.EMP_NO as [사원번호], I.EMP_NM as [이름], sum(S.REL_PAY_AMT)/3 as [3개월 평균 급여]
 from IN30100 S, IN10100 I where S.EMP_NO=I.EMP_NO AND datediff(mm,getdate(),cast(S.YYMM+'01' as datetime)) >= -2 AND I.ON_WORK_YN='Y'
 group by S.EMP_NO, I.EMP_NM
 order by S.EMP_NO desc

반응형

+ Recent posts