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

.toList를 붙여준다.

| 한번만 실행되게 하는방법 (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으로 사용하도록 한다.
| .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 테이블을 만들어보자

다 만들었으면 아래와 같이 코드를 만들고 실행하여 보자
SELECT DISTINCT
@COL = STUFF((
SELECT DISTINCT ',' + QUOTENAME(YYYYMM)
FROM SALE
FOR XML PATH('')
),1,1,'')
FROM SALE
SELECT @COL

위 이미지와 같은 결과가 나타나게된다. 위의 결과를 자세히 살펴보면 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
| MySQL의 GROUP_CONCAT 함수: 여러 값을 하나의 문자열로 결합하기 (0) | 2024.08.23 |
|---|---|
| 기존 테이블에 속성 추가 (0) | 2021.11.11 |
| mssql - ISNULL, IN, Procedure (0) | 2021.01.18 |
| mssql - join, between, like '%' (0) | 2021.01.18 |
Dock
- 부모 컨트롤의 크기가 변경되면 같이 변경되도록 하는 것이다.
Dock 사용전

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

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

위에 버튼이 있는 패널이 panelControl2 이고 두번째 panelControl1는 textEdit이 들어가는 공간이고
밑에 GridControl1이 DB에 관련된 내용이 들어가는 곳이다.

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

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

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