반응형
반응형

 

 

분석용 함수

 

RANK - 해당값에 대한 우선순위를 결정 (중복 우선순위 허용)

 

DENSE_RANK - 해당값에 대한 우선순위를 결정 (중복 우선순위 허용 안함)

 

ROW_NUMBER - 조건을 만족하는 모든 행의 번호를 제공

 

CUME_DIST - 분산값

 

PERCENT_RANK - 백분율

 

NTILE(n) - 전체 데이터 분포를 n-Buckets으로 나누어 표시

 

FIRST_VALUE - 정렬된 값중에서 첫번째 값을 반환.

 

LAST_VALUE - 정렬된 값중에서 마지막 값을 반환.

 

 

OVER() 에 사용되는 OPTION

 

1. PARTITION BY
2. ORDER BY DESC
3. NULLS FIRST : NULL 데이터를 먼저 출력.
4. NULLS LAST : NULL 데이터를 나중에 출력.


 

반응형

'프로그래밍 > DataBase' 카테고리의 다른 글

[MSSQL] SET IDENTITY_INSERT(Transact-SQL)  (0) 2014.11.24
Realmβ - 모바일DB 렘  (0) 2014.09.30
[MSSQL] IDENT_CURRENT(Transact-SQL)  (0) 2014.04.07
[ORACLE] 달력만들기  (0) 2014.04.01
[DB] transaction, commit, rollback  (0) 2014.02.12
반응형

IDENT_CURRENT(Transact-SQL)

 

지정된 테이블 또는 뷰에 대해 생성된 마지막 ID 값을 반환합니다. 생성된 마지막 ID 값은 임의의 세션 및 범위에 대한 값일 수 있습니다.

 

 

* Link : http://technet.microsoft.com/ko-kr/library/ms175098.aspx - IDENT_CURRENT

           http://technet.microsoft.com/ko-kr/library/ms187342.aspx - @@IDENTITY

 

 

IDENT_CURRENT는 SQL Server 2000 IDENTITY 함수 SCOPE_IDENTITY 및 @@IDENTITY와 유사합니다. 이 세 함수는 모두 최근에 생성된 ID 값을 반환합니다. 그러나 각 함수에서 최근이 정의하는 범위와 세션은 각기 다릅니다.


IDENT_CURRENT는 임의의 세션과 범위에 있는 특정 테이블에 대해 최근 생성된 ID 값을 반환합니다.


@@IDENTITY는 현재 세션의 전체 범위에 걸쳐 임의의 테이블에 대해 최근 생성된 ID 값을 반환합니다.


SCOPE_IDENTITY는 현재 세션 및 현재 범위에 있는 임의의 테이블에 대해 최근 생성된 ID 값을 반환합니다.


IDENT_CURRENT 값이 NULL인 경우(테이블에 행이 포함된 적이 없거나 테이블이 잘린 경우) IDENT_CURRENT 함수는 초기값을 반환합니다.


문 및 트랜잭션이 실패하면 테이블의 현재 ID가 변경되고 ID 열 값 간에 간격이 생성될 수 있습니다. 테이블에 값을 삽입하려고 시도한 트랜잭션이 커밋되지 않아도 ID 값은 롤백되지 않습니다. 예를 들어 IGNORE_DUP_KEY 위반으로 인해 INSERT 문이 실패하더라도 테이블의 현재 ID 값은 여전히 증가합니다.


IDENT_CURRENT를 사용하여 다음에 생성되는 ID 값을 예측할 때 유의합니다. 다른 세션에서 삽입 작업을 수행하므로 실제로 생성된 값은 IDENT_CURRENT에 IDENT_INCR을 더한 값과 다를 수 있습니다.

 

 

USE AdventureWorks2012;
GO
IF OBJECT_ID(N't6', N'U') IS NOT NULL 
    DROP TABLE t6;
GO
IF OBJECT_ID(N't7', N'U') IS NOT NULL 
    DROP TABLE t7;
GO
CREATE TABLE t6(id int IDENTITY);
CREATE TABLE t7(id int IDENTITY(100,1));
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT 
AS
BEGIN
   INSERT t7 DEFAULT VALUES
END;
GO
--End of trigger definition

SELECT id FROM t6;
--IDs empty.

SELECT id FROM t7;
--ID is empty.

--Do the following in Session 1
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100. This was inserted by the trigger.*/

SELECT SCOPE_IDENTITY();
/* Returns the value 1. This was inserted by the 
INSERT statement two statements before this query.*/

SELECT IDENT_CURRENT('t7');
/* Returns value inserted into t7, that is in the trigger.*/

SELECT IDENT_CURRENT('t6');
/* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/

-- Do the following in Session 2.
SELECT @@IDENTITY;
/* Returns NULL because there has been no INSERT action 
up to this point in this session.*/

SELECT SCOPE_IDENTITY();
/* Returns NULL because there has been no INSERT action 
up to this point in this scope in this session.*/

SELECT IDENT_CURRENT('t7');
/* Returns the last value inserted into t7.*/

 

 

 


 

반응형
반응형

 

 

 

BEGIN TRANSACTION CandidateDelete
    WITH MARK N'Deleting a Job Candidate';
GO
USE AdventureWorks2012;
GO
DELETE FROM AdventureWorks2012.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION CandidateDelete;
GO

 

 

 

 

BEGIN TRAN @TransactionName
       INSERT INTO ValueTable VALUES(1), (2);
ROLLBACK TRAN @TransactionName;

반응형
반응형

 

getdate()에 1초 더하기

 

SELECT getdate(),(dateadd(s,1,getdate()))

 

 

반응형
반응형

[1] 프로시저 총 목록...

Select ROUTINE_NAME from INFORMATION_SCHEMA.ROUTINES

 

[2] 프로시저 소스 보기

 sp_helptext  프로시저명

 

[3] 프로시저 정보 보기

sp_help 프로시저명

반응형
반응형

-- 프로시져(Stored Procedure) 목록 보기
SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE='PROCEDURE'
ORDER BY ROUTINE_NAME
 
 
-- 프로시져 내용 보기
exec SP_HELPTEXT proc_Procedure


 

 

반응형

+ Recent posts