[MSSQL] 세로 데이터 가로로 출력 (데이터 한줄로 출력) STUFF, FOR XML PATH


http://ggmouse.tistory.com/127




DECLARE @string AS VARCHAR(1000);

SET @string = '';

 

WITH TABLE_A (NAME) AS (

    SELECT '손꽁쥐' UNION ALL

    SELECT '윤선생' UNION ALL

    SELECT '황박사'

)

 

SELECT @string = NAME + ', ' + @string FROM TABLE_A

SELECT @string AS '가로출력' 




--  

WITH TABLE_A (CLASS, NAME) AS (

    SELECT 'A', '손꽁쥐' UNION ALL

    SELECT 'B', '윤선생' UNION ALL

    SELECT 'A', '황박사'

)

SELECT * FROM

(

    SELECT CLASS, STUFF((SELECT ',' + NAME FROM TABLE_A WHERE CLASS = A.CLASS FOR XML PATH('')), 1, 1, '') AS 'Result'

    FROM TABLE_A AS A

) A

GROUP BY A.CLASS, A.Result


Posted by 홍반장水 홍반장水

Microsoft SQL Server Management Studio Express

SSMSE(Microsoft SQL Server Management Studio Express)는 SQL Server 2005 Express Edition 및 SQL Server 2005 Express Edition with Advanced Services를 관리할 수 있는 사용이 용이한 무료 그래픽 관리 도구입니다.


63비트 다운로드 후 관리자권한 으로 실행. 


https://www.microsoft.com/ko-kr/download/details.aspx?id=8961







.

Posted by 홍반장水 홍반장水

-- MS-SQL 특정 단어가 포함된 프로시저 찾기


검색어에 특정 문자나 테이블명을 넣으면 된다.


use 데이터베이스


SELECT ROUTINE_NAME
        FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_DEFINITION LIKE '% 검색어 %'
        AND ROUTINE_TYPE='PROCEDURE'
        order by ROUTINE_NAME;



select so.name
from syscomments sc
join sysobjects so on sc.id = so.id
where so.xtype = 'p'
  and sc.text like '% 검색어 %'

Posted by 홍반장水 홍반장水

mssql 에서 타임스템프 추출하기


mssql timestamp




 -- TIMESTAMP 설정( 세계표준시보다 +9시간 빠른 한국시간 )
 select  '현재시간' = DATEADD(SECOND, 1468186808, '19700101 09:00:00')

        , DATEDIFF(second, '19700101 09:00:00', getdate())

        ,  DATEDIFF(second, '19700101 09:00:00', getdate()) - (9*60*60)



.

Posted by 홍반장水 홍반장水

[MSSQL]문자열에서 특정문자 개수 알아오기


DECLARE @STR VARCHAR(20)

SET @STR = 'YNYNNNNN'

 

SELECT LEN(@STR)-LEN(REPLACE(@STR,'Y',''))


결과값: 2 (Y가 2번 들어있음)

Posted by 홍반장水 홍반장水
TAG MSSQL, replace

SET IDENTITY_INSERT (Transact-SQL)

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }

database_name

Is the name of the database in which the specified table resides.

schema_name

Is the name of the schema to which the table belongs.

table

Is the name of a table with an identity column.

https://msdn.microsoft.com/en-us/library/ms188059.aspx

Posted by 홍반장水 홍반장水

SQL Server Management Studio 바로 가기 키

https://msdn.microsoft.com/ko-kr/library/ms174205.aspx

 

 

동작

SQL Server 2014

SQL Server 2008 R2

SQL Server Management Studio 메뉴 모음으로 이동

Alt

Alt

도구 구성 요소에 대한 메뉴 활성화

Alt+하이픈

Alt+하이픈

상황에 맞는 메뉴 표시

Shift+F10

Shift+F10

파일을 만들 수 있는 새 파일 대화 상자 표시

Ctrl+N

Ctrl+N

새 프로젝트를 만들 수 있는 새 프로젝트 대화 상자 표시

Ctrl+Shift+N

Ctrl+Shift+N

기존 파일을 열 수 있는 파일 열기 대화 상자 표시

Ctrl+O

또는

Ctrl+Shift+G

Ctrl+O

기존 프로젝트를 열 수 있는 프로젝트 열기 대화 상자 표시

Ctrl+Shift+O

Ctrl+Shift+O

새 파일을 현재 프로젝트에 추가할 수 있는 새 항목 추가 대화 상자 표시

Ctrl+Shift+A

Ctrl+Shift+A

기존 파일을 현재 프로젝트에 추가할 수 있는 기존 항목 추가 대화 상자 표시

Shift+Alt+A

Shift+Alt+A

쿼리 디자이너 표시

Ctrl+Shift+Q

Ctrl+Shift+Q

메뉴나 대화 상자를 닫고 동작 취소

Esc

Esc

동작

SQL Server 2014

SQL Server 2008 R2

현재 MDI 자식 창 닫기

Ctrl+F4

Ctrl+F4

메뉴 또는 대화 상자 닫기, 진행 중인 작업 취소, 현재 문서 창에 포커스 놓기

Esc

Esc

인쇄

Ctrl+P

Ctrl+P

끝내기

Alt+F4

Alt+F4

전체 화면 모드 설정/해제

Shift+Alt+Enter

Shift+Alt+Enter

현재 도구 창 닫기

Shift+Esc

Shift+Esc

다음 MDI 자식 창 순환

Ctrl+F6

Ctrl+Tab

선택한 첫 번째 문서 창을 사용하여 IDE 탐색기 표시

Ctrl+Tab

해당 키 없음

이전 MDI 자식 창 순환

Ctrl+Shift+Tab

Ctrl+Shift+Tab

편집기가 코드 뷰 또는 서버 코드 뷰에 있을 때 코드 편집기의 맨 위에 있는 드롭다운 막대로 삽입 지점 이동

Ctrl+F2

해당 키 없음

현재 도구 창 도구 모음으로 이동

Shift+Alt

Shift+Alt

선택한 첫 번째 도구 창을 사용하여 IDE 탐색기 표시

Alt+F7

해당 키 없음

다음 도구 창으로 이동

Alt+F6

또는

F6(데이터베이스 엔진 쿼리 편집기의 경우)

Alt+F6

이전 도구 창으로 이동

Shift+Alt+F7

Shift+Alt+F7

단일 문서의 분할 창 보기에서 다음 창으로 이동

F6

F6

이전의 선택한 창으로 이동

Shift+Alt+F6

또는

Shift+F6(데이터베이스 엔진 쿼리 편집기의 경우)

Shift+Alt+F6

단일 문서의 분할 창 보기에서 이전 창으로 이동

Shift+F6

F6

도킹 메뉴 표시

Alt+빼기 기호(-)

해당 키 없음

열려 있는 모든 창을 나열하는 팝업 표시

Ctrl+Alt+아래쪽 화살표

해당 키 없음

새 쿼리 편집기 창 열기

Ctrl+O

Ctrl+O

개체 탐색기 표시

F8

F8

등록된 서버 표시

Ctrl+Alt+G

Ctrl+Alt+G

템플릿 탐색기 표시

Ctrl+Alt+T

Ctrl+Alt+T

솔루션 탐색기 표시

Ctrl+Alt+L

Ctrl+Alt+L

요약 창 표시

F7

F7

속성 창 표시

F4

F4

출력 창 표시

Ctrl+Alt+O

해당 키 없음

태스크 목록 창 표시

Ctrl+\, T

또는

Ctrl+\, Ctrl+T

Ctrl+Alt+K

개체 탐색기 정보 목록 뷰와 개체 탐색기 정보 속성 창 간에 전환

F6

F6

개체 탐색기 정보 목록 뷰와 개체 탐색기 정보 속성 창을 구분하는 분할 막대를 제어하여 표시 창의 크기 조정

Tab 키를 누른 다음 위쪽 화살표 또는 아래쪽 화살표

Tab 키를 누른 다음 위쪽 화살표 또는 아래쪽 화살표

도구 상자 표시

Ctrl+Alt+X

Ctrl+Alt+X

책갈피 창 표시

Ctrl+K, Ctrl+W

Ctrl+K, Ctrl+W

브라우저 창 표시

Ctrl+Alt+R

Ctrl+Alt+R

HTML 디자이너에 웹 서버 컨트롤에 대한 일반적인 명령이 포함된 스마트 태그 메뉴 표시

Shift+Alt+F10

해당 키 없음

오류 목록 창 표시(Transact-SQL 편집기에만 해당)

Ctrl+\, Ctrl+E

또는

Ctrl+\, E

Ctrl+\, Ctrl+E

오류 목록 창에서 다음 항목으로 이동(Transact-SQL 편집기에만 해당)

Ctrl+Shift+F12

Ctrl+Shift+F12

보기 기록에서 이전 페이지 표시. 웹 브라우저 창에서만 사용할 수 있습니다.

Alt+왼쪽 화살표

해당 키 없음

보기 기록에서 다음 페이지 표시. 웹 브라우저 창에서만 사용할 수 있습니다

Alt+오른쪽 화살표

해당 키 없음


Posted by 홍반장水 홍반장水

mssql  줄바꿈 치환

 


 REPLACE(REPLACE(CONTENT, char(13) , '' ) ,  char(10), '' ) 





* 줄바꿈, 탭문자 제거 방법(text 타입도 포함)



- 변경 스트링 함수

replace([컬럼명], [변경할 문자], [변경될 문자])


- 엔터, 탭 문자 제거 함수 활용

Tab : char(9)

Line feed: char(10)

Carriage return: char(13)



>엔터 : replace(replace([컬럼명], char(13), ''), char(10), '')

>탭 : replace([컬럼명], char(9), '')

 


 텍스트 타입일 경우, [replace 함수의 인수 1에 대한 인수 데이터 형식 text이(가) 잘못되었습니다.] 에러를 확인할 수 있다.


=> replace(convert(varchar(max), [컬럼명]), [변경할 문자], [변경될 문자])


 

 

Posted by 홍반장水 홍반장水

 

 

분석용 함수

 

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 데이터를 나중에 출력.


 

'Extreming X > DataBase' 카테고리의 다른 글

[MSSQL] SET IDENTITY_INSERT(Transact-SQL)  (0) 2014.11.24
Realmβ - 모바일DB 렘  (0) 2014.09.30
[MSSQL] RANK(), PARTITION BY 통계 함수들  (0) 2014.04.25
[MSSQL] IDENT_CURRENT(Transact-SQL)  (0) 2014.04.07
[ORACLE] 달력만들기  (0) 2014.04.01
[DB] transaction, commit, rollback  (0) 2014.02.12
Posted by 홍반장水 홍반장水

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.*/

 

 

 


 

Posted by 홍반장水 홍반장水