.toList를 붙여준다.

 

'C#' 카테고리의 다른 글

한번만 실행되게 하는방법  (0) 2021.05.18
.NET Reflection  (0) 2021.03.29
외부 프로젝트 참조하기  (0) 2021.02.25
[Winform] Dock  (0) 2021.01.22
C# Thread  (0) 2020.12.01

프로젝트 EntityFrameWork_test에서 ClassLibrary1 프로젝트를 참조하려고한다. 

EntityFrameWork_test에 참조를 우클릭하여 참조 추가를 선택한다. 

참조관리자엣서 프로젝트에 참조하고자하는 프로젝트를 선택하여 확인한다. 

사용하고자 하는 곳에서 using으로 사용하도록 한다. 

'C#' 카테고리의 다른 글

.NET Reflection  (0) 2021.03.29
Dbset 직접 바인딩 에러 해결법  (0) 2021.02.25
[Winform] Dock  (0) 2021.01.22
C# Thread  (0) 2020.12.01
C# Dictionary  (0) 2020.11.30

슬라이드 쇼에서 모니터 텍스트 에디터에서 설정 가능하다.

피벗(PIVOT)의 사전적 의미는 마찰을 적게 하기 위하여 회전하는 축의 지점 끝을 원뿔꼴로 한 것이다. 이 의미를 데이터베이스에서 나름 해석해보자면 테이블을 90도 회전 시켜 열을 행으로 바꿔버리는 그런 느낌의 의미라 할 수 있을 것이다. 

DECLARE @COL AS NVARCHAR(MAX)
DECLARE @QUERY AS NVARCHAR(MAX)


SELECT * FROM SALE 

SELECT DISTINCT
	@COL = STUFF((
		SELECT DISTINCT ',' + QUOTENAME(YYYYMM)
		FROM SALE
		FOR	XML PATH('')
	  ),1,1,'') 
FROM SALE 
SELECT @COL


SET @QUERY = 'SELECT * FROM 
(
SELECT  * FROM SALE
) AS RESULT 
PIVOT( SUM(AMT) FOR YYYYMM IN ('+@COL+'))AS pivot_result'

EXECUTE(@QUERY)

 

우선 아래와 같이 SALE 테이블을 만들어보자

 

SALE TABLE

다 만들었으면 아래와 같이 코드를 만들고 실행하여 보자

SELECT DISTINCT
	@COL = STUFF((
		SELECT DISTINCT ',' + QUOTENAME(YYYYMM)
		FROM SALE
		FOR	XML PATH('')
	  ),1,1,'') 
FROM SALE 
SELECT @COL

STUFF, XML PATH 를 사용하여 YYYMM의 데이터를 한열로 요약하였다.

위 이미지와 같은 결과가 나타나게된다. 위의 결과를 자세히 살펴보면 YYYYMM 속성의 값들이 중복 없이 일열로 나열된 것을 확인할 수 있다. 이를 위해서 STUFF((쿼리문 FOR XML PATH('') ),1,1,'')을 활용하면 된다.  

STUFF에 관해 구체적으로 궁금하다면 아래 사이트를 참조하길 바란다. 

[MSSQL] STUFF와 FOR XML PATH를 활용한 문자열 합치기 (tistory.com)

 

[MSSQL] STUFF와 FOR XML PATH를 활용한 문자열 합치기

MSSQL에서 문자열을 합치는 방법은 여러가지가 있습니다. 이번 포스팅에서는 테이블을 Select 해온 결과값을 문자열로 쉽고 간편하게 만들 수 있는 방법을 소개해 드리도록 하겠습니다. STUFF, FOR XML

coding-factory.tistory.com

그리고 아직 설명하지 않은 QUOTENAME()이 남아있다. QUOTENAME()이 어떤 기능을 가졌는지 이해하기 위해서 우선 QUOTENAME을 없애고 위의 코드를 실행시키면 아래와 같이 [] 대괄호가 사라진 것을 확인할 수 있다. 이 사실로 미루어 보아 QUOTENAME이 대괄호를 만들어주는 역할을 수행하는 것을 알 수 있지만 왜 필요한지 의문이 들 수 있다. 어느 블로그에서 확인한 바로는 피벗 테이블에서 속성으로 만들어주기 위해서는 MSSQL에서는 대괄호로 감싸져 있어야 한다고 한다.

 

이제 아래와 같이 피벗 테이블을 만들어주는 쿼리문을 작성하여 보자. 

SET @QUERY = 'SELECT * FROM 
(
SELECT  * FROM SALE
) AS RESULT 
PIVOT( SUM(AMT) FOR YYYYMM IN ('+@COL+'))AS pivot_result'

EXECUTE(@QUERY)

 피벗 테이블의 일반적인 구조는 아래와 같다. 

SELECT *
FROM (SELECT * FROM 피벗을 원하는 테이블) AS RESULT
PIVOT ( 그룹함수(집계컬럼) FOR 피벗대상컬럼 IN ([피벗컬럼값], ...) AS PIVOT_RESULT

 

 

일반 테이블을 피벗 테이블로 완성시킨 모습

 

PIVOT에 대해 추가적으로 학습하고 싶다면 아래의 블로그를 활용하길 바란다. 

[MSSQL] PIVOT 함수, 행을 열로 바꾸기 (크로스탭, 동적컬럼) (tistory.com)

 

[MSSQL] PIVOT 함수, 행을 열로 바꾸기 (크로스탭, 동적컬럼)

SQL Server에서 행을 열로 변환하기 위해서는 PIVOT() 함수를 이용하면 된다. 특히 그룹함수를 이용하여 통계를 추출할 때 많이 사용된다. SELECT * FROM ( 피벗할 쿼리문 ) AS result  PIVOT ( 그룹합수(집계

gent.tistory.com

 

Dock

- 부모 컨트롤의 크기가 변경되면 같이 변경되도록 하는 것이다.

 

Dock 사용전

창을 확대하기 전에는 창에 그리드랑 패널이 가득 차있어보이지만 창을 키우면

그리드랑 패널의 크기는 그대로 고정되어 있고 창만 늘어난 것을 확인할 수 있다. 창의 크기를 늘리기위해서 Dock이라는 것을 사용할 수 있다.

 

위에 버튼이 있는 패널이 panelControl2 이고 두번째 panelControl1는 textEdit이 들어가는 공간이고

밑에 GridControl1이 DB에 관련된 내용이 들어가는 곳이다. 

Dock을 설정할때 나타나게 되는 창

panelControl1과 panelControl2같은 경우 위에 붙어있는 것을 확인할 수 있다. 따라서 Dock의 값을 TOP으로 설정하고 

GridControl1의 Dock 값은 FIill로 주었다. 

panelControl1과 panelControl2는 둘다 Dock의 값으로 TOP을 주었다. 그렇기 때문에 누가 위쪽으로 갈지 우선순위가 정해저야 한다. 위 이미지를 보면 디자이너에서 Form 컨트롤에 panel들이 추가되고 있는 모습을 볼 수 있다. 위 순서에 따라서 Dock의 우선순위가 변하기 때문에 우선순위 설정을 잘 해주어야 한다.

성공적으로 창의 크기가 커짐에 따라서 내부 컨트롤들도 커지는 것을 확인하였다. 패널 내부에있는 컨트롤들과의 간격이 너무 가까운 것 같으니 Margin의 크기를 좀더 키워서 간격을 만드는 것이 좋겠다. 

'C#' 카테고리의 다른 글

.NET Reflection  (0) 2021.03.29
Dbset 직접 바인딩 에러 해결법  (0) 2021.02.25
외부 프로젝트 참조하기  (0) 2021.02.25
C# Thread  (0) 2020.12.01
C# Dictionary  (0) 2020.11.30

+ Recent posts