SSMS 에러 해결방법!!
에러 내용 :
ssms를 켜고 솔루션 창이나 출력, 속성창등을 드래그 해서 창을 프로그램에서 꺼낸 후 다시 드래그로
원하는 위치로 넣을때 프로그램이 종료되는 현상.
해결방법 :
docs.microsoft.com/en-us/answers/questions/263738/ssms-188-crashes-when-re-docking-tabs.html
SSMS 18.8 crashes when re-docking tabs - Microsoft Q&A
docs.microsoft.com
VinnieAmir-0621 <---- 이사람 답변
구글번역 :
모든 SSMS 창을 닫고 SQL Mgt Studio EXE 파일을 찾으십시오.
C:\Program Files(x86)\Microsoft SQL Server Management Studio 18\Common7\IDE 찾을 수 없는 경우
SSMS를 여는 데 사용하는 바로 가기를 마우스 오른쪽 단추로 클릭하고 속성> 파일 위치 열기로 이동합니다.
이 파일을 찾으면 "Ssms.exe.config"라는 파일도 찾아서 관리자 모드에서 메모장을 열고이 파일을 편집합니다.
그런 다음 라는 xml 태그를 찾아야하며 다음을 정확히 APPEND (대체 아님)해야합니다.
;Switch.System.Windows.Interop.MouseInput.OptOutOfMoveToChromedWindowFix=true;Switch.System.Windows.Interop.MouseInput.DoNotOptOutOfMoveToChromedWindowFix=true
그리고 그게 다입니다. 이제이 불쾌한 충돌을 피할 수 있습니다.
ps :
새 프로젝트를 시작하면서 기존 노트북이 망가져서 새 노트북에 환경설정을 마쳤었다.
크리스탈 리포트 관련 이슈가 있어서 해결하는 과정에서 ssms를 실행하고 프로시저를 확인하려고
내가 만들어 넣은 오브젝트 탐색기를 가동시켜 프로시저를 찾았는데...
이게 설정 후 처음 열리는 것이라 팝업형태로 떠있길래 드래그 해서 프로그램안으로 밀어넣었는데...
강제종료???
여러번 해봤지만 역시나 에러로 종료되어 내 개발pc에서 확장프로그램 소스를 이용하여 ssms를 열고 동일한 에러가 발생하였다. ssms버젼확인 후 18.5에서 해결되었다는 글을 보고 최신버젼 18.8을 설치하였으나 동일한 증상이 일어났다.
혹시나 하여 14, 16, 17버젼 모두 실행해서 확인해본결과 14빼고 모두 동일하게 강제종료 되었다.
잘 되던게 왜이러나 하고... 고민하던 중에... 내가 만든 것만 그런가? 라는 생각에...
ssms에 원래 있던 창인 "출력" 창을 열어서 드래그해서 붙여보니 ... 동일하게 강제종료 현상이 발생하였다.
다행이 내 프로그램문제는 아니구나 하고 검색... 검색... ....
찾았다. 영어가 안되는게 참 서글픈... 크롬에서 번역기능이 없었으면... 찾았을까 싶다.
머리가 나빠서 쉽지 않은 삶이야...
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
sqler 문제 풀이. (0) | 2017.05.22 |
---|---|
sqler에 올라온 질문글... (0) | 2016.09.12 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.20 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.13 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.11 |
피봇(pivot)과 언피봇(unpivot) 응용
환경 : 오라클 12C
피봇은 주로 사용해왔으니... 원래 알던 개념이었다.
언피봇은 무조건 피봇의 반대라고 생각했었는데...
율촌 프로젝트 하면서 공부를 다시 하게 되었다.
언피봇과 피봇을 합치면 멋진 결과가 나오더라.
- MES 생산결과를 뽑아 낼때 투입대비, 생산량을 뽑아내는 쿼리에 적용했었다.
-- 탭키 간격이 안먹넹...
SELECT *
FROM
(
SELECT *
FROM
(
SELECT '데이타' A, 1 K, 10 DATA1, 20 DATA2
,'NO 1의 설명' NO1_DESC
,'NO 2의 설명' NO2_DESC
FROM DUAL
UNION ALL
SELECT '데이타' A, 2 K, 30 DATA1, 40 DATA2
,'NO 1의 설명' NO1_DESC
,'NO 2의 설명' NO2_DESC
FROM DUAL
UNION ALL
SELECT '데이타' A, 3 K, 50 DATA1, 60 DATA2
,'NO 1의 설명' NO1_DESC
,'NO 2의 설명' NO2_DESC
FROM DUAL
) A
UNPIVOT
(
( NO_DESC, DATA ) FOR
NO IN
(
(NO1_DESC, DATA1) AS 1,
(NO2_DESC, DATA2) AS 2
)
)
) T
PIVOT
(
MIN( DATA ) AS DATA FOR
K IN ( 1 , 2, 3 )
)
;
** 음... mssql이랑 다른가? 이상하게 동작하네...
오라클은 위 문법에 맞춰서 작성하면 잘 되던뎅...
동일한 결과로 mssql로 만들려면 다르게 작성해야 한다.
unpivot 도 내가 원래 알던대로 mssql은 동작하고...
오라클로 테스트를 못해보니까 아쉽네...
뭔가 좀 다르게 동작하는 듯 한데... 어떻게 보면 같은것 같기도 하고...
다음에 오라클 쓸때가 오면 다시 비교해봐야겠다.
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
집계함수 MIN, MAX에 해당하는 다른 컬럼값은? (0) | 2019.11.03 |
---|---|
GROUP 콤마구분자로 연결하기 (0) | 2019.11.03 |
달력2 (0) | 2019.11.03 |
달력 1 (0) | 2019.11.03 |
[오라클] 동적쿼리 (0) | 2010.10.24 |
집계함수 MIN, MAX에 해당하는 다른 컬럼값은?
환경 : 오라클 12C
-- 해석 : K가 가장 높은 값의 V는 뭐지?,
-- K가 가장 낮은 값의 V는 뭐지?
SELECT MAX( V ) KEEP ( DENSE_RANK FIRST ORDER BY K DESC ) MAX_K_V
, MIN( V ) KEEP ( DENSE_RANK LAST ORDER BY K DESC ) MIN_K_V
FROM
(
SELECT 1 K, 'A' V FROM DUAL UNION ALL
SELECT 0 K, 'B' V FROM DUAL UNION ALL
SELECT 3 K, 'C' V FROM DUAL UNION ALL
SELECT 9 K, 'D' V FROM DUAL UNION ALL
SELECT 5 K, 'E' V FROM DUAL UNION ALL
SELECT 6 K, 'F' V FROM DUAL
) Z
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
피봇(pivot)과 언피봇(unpivot) 응용 (0) | 2019.11.03 |
---|---|
GROUP 콤마구분자로 연결하기 (0) | 2019.11.03 |
달력2 (0) | 2019.11.03 |
달력 1 (0) | 2019.11.03 |
[오라클] 동적쿼리 (0) | 2010.10.24 |
GROUP 콤마구분자로 연결하기
환경 : 오라클 12C
SELECT LISTAGG( GROUP_KEY || '_V, ' || GROUP_KEY || '_R' , ', ') WITHIN GROUP (ORDER BY GROUP_KEY) V1
FROM (
SELECT 1 GROUP_KEY FROM DUAL UNION ALL
SELECT 2 GROUP_KEY FROM DUAL UNION ALL
SELECT 3 GROUP_KEY FROM DUAL UNION ALL
SELECT 4 GROUP_KEY FROM DUAL
) A;
결과 : 1_V, 1_R, 2_V, 2_R, 3_V, 3_R, 4_V, 4_R
반대로
select TRIM(REGEXP_SUBSTR( COLS, '[^,]+', 1, 1, 'i')) COL1
,TRIM(REGEXP_SUBSTR( COLS, '[^,]+', 1, 2, 'i')) COL2
,TRIM(REGEXP_SUBSTR( COLS, '[^,]+', 1, 3, 'i')) COL3
,TRIM(REGEXP_SUBSTR( COLS, '[^,]+', 1, 4, 'i')) COL4
from
(
SELECT 'A,B,C,D' COLS
FROM DUAL
) a
;
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
피봇(pivot)과 언피봇(unpivot) 응용 (0) | 2019.11.03 |
---|---|
집계함수 MIN, MAX에 해당하는 다른 컬럼값은? (0) | 2019.11.03 |
달력2 (0) | 2019.11.03 |
달력 1 (0) | 2019.11.03 |
[오라클] 동적쿼리 (0) | 2010.10.24 |
달력2
환경 : 오라클 12C
일하다보면 스케쥴관리를 구현할때가 있는데...
그 샘플 쿼리이다.
WITH MONTH_DAY
AS
(
SELECT ( TRUNC( TO_DATE( :AV_DAY , 'YYYYMMDD'), 'MM') -1 * ( TO_CHAR( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM'), 'D' ) - 1 )) + LEVEL - 1 DD
FROM DUAL
CONNECT BY LEVEL <= ( ( LAST_DAY( TO_DATE(:AV_DAY, 'YYYYMMDD') ) + ( 7 - TO_CHAR( LAST_DAY( TO_DATE(:AV_DAY, 'YYYYMMDD') ), 'D' ))) -- 종료일
- ( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM') -1 * ( TO_CHAR( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM'), 'D' ) - 1 )) + 1 ) -- 시작일
), DATA_TMP
AS
(
SELECT LEVEL - 1 LV
FROM DUAL
CONNECT BY LEVEL <= 5
)
, DATA_CONT
AS
(
SELECT A.LV, B.DD, B.VAL1
FROM DATA_TMP A
,
(
SELECT TO_DATE( '20190303', 'YYYYMMDD') DD, 1 LV, '값1' VAL1 FROM DUAL UNION
SELECT TO_DATE( '20190303', 'YYYYMMDD') DD, 2 LV, '값2' VAL1 FROM DUAL UNION
SELECT TO_DATE( '20190403', 'YYYYMMDD') DD, 1 LV, '0403' VAL1 FROM DUAL UNION
SELECT TO_DATE( '20190303', 'YYYYMMDD') DD, 3 LV, '332' VAL1 FROM DUAL
)B
WHERE A.LV = B.LV(+)
)
, MONTH_DAY_WEEK
AS
(
SELECT A.DD
, TRUNC( (TO_NUMBER( A.DD - ( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM') -1 * ( TO_CHAR( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM'), 'D' ) ))) - 1 )/ 7) WEEK
, TO_CHAR( A.DD, 'DY' ) DAYOFWEEK
, B.LV
, CASE WHEN B.LV = 0 THEN TO_CHAR( A.DD, 'DD' ) ELSE C.VAL1 END VAL1
FROM MONTH_DAY A, DATA_TMP B, DATA_CONT C
WHERE A.DD = C.DD(+)
AND B.LV = C.LV(+)
)
select *
from
(
SELECT TO_CHAR( MIN(DD), 'YYYYMMDD') || '~' || TO_CHAR( MAX( DD ), 'YYYYMMDD') FROMTO
, WEEK
, LV
, MAX("'일'") "SUN"
, MAX("'월'") "MON"
, MAX("'화'") "TUE"
, MAX("'수'") "WED"
, MAX("'목'") "THU"
, MAX("'금'") "FRI"
, MAX("'토'") "SAT"
FROM MONTH_DAY_WEEK
PIVOT
(
MAX( VAL1 ) FOR DAYOFWEEK IN ( '일', '월', '화', '수', '목', '금', '토' )
) A
GROUP BY WEEK, LV
ORDER BY WEEK, LV
)
;
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
집계함수 MIN, MAX에 해당하는 다른 컬럼값은? (0) | 2019.11.03 |
---|---|
GROUP 콤마구분자로 연결하기 (0) | 2019.11.03 |
달력 1 (0) | 2019.11.03 |
[오라클] 동적쿼리 (0) | 2010.10.24 |
[오라클] 패키지 만드는 구문.. (0) | 2010.10.23 |
달력 1
환경 : 오라클 12C
WITH MONTH_DAY
AS
(
SELECT ( TRUNC( TO_DATE( :AV_DAY , 'YYYYMMDD'), 'MM') -1 * ( TO_CHAR( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM'), 'D' ) - 1 )) + LEVEL - 1 DD
FROM DUAL
CONNECT BY LEVEL <= ( ( LAST_DAY( TO_DATE(:AV_DAY, 'YYYYMMDD') ) + ( 7 - TO_CHAR( LAST_DAY( TO_DATE(:AV_DAY, 'YYYYMMDD') ), 'D' ))) -- 종료일
- ( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM') -1 * ( TO_CHAR( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM'), 'D' ) - 1 )) + 1 ) -- 시작일
)
, MONTH_DAY_WEEK
AS
(
SELECT DD
, TRUNC( (TO_NUMBER(DD - ( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM') -1 * ( TO_CHAR( TRUNC( TO_DATE(:AV_DAY, 'YYYYMMDD'), 'MM'), 'D' ) ))) - 1 )/ 7) WEEK
, TO_CHAR( DD, 'DY' ) DAYOFWEEK
, TO_CHAR( DD, 'DD' ) VAL1
FROM MONTH_DAY
)
SELECT TO_CHAR( MIN(DD), 'YYYYMMDD') || '~' || TO_CHAR( MAX( DD ), 'YYYYMMDD') FROMTO
, WEEK
, MAX("'일'") "SUN"
, MAX("'월'") "MON"
, MAX("'화'") "TUE"
, MAX("'수'") "WED"
, MAX("'목'") "THU"
, MAX("'금'") "FRI"
, MAX("'토'") "SAT"
FROM MONTH_DAY_WEEK
PIVOT
(
MAX( VAL1 ) FOR DAYOFWEEK IN ( '일', '월', '화', '수', '목', '금', '토' )
) A
GROUP BY WEEK
ORDER BY WEEK
;
:AV_DAY := '20191001'
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
GROUP 콤마구분자로 연결하기 (0) | 2019.11.03 |
---|---|
달력2 (0) | 2019.11.03 |
[오라클] 동적쿼리 (0) | 2010.10.24 |
[오라클] 패키지 만드는 구문.. (0) | 2010.10.23 |
[토드9.5] 쿼리 테스트 할때 구문 작성법... (0) | 2010.10.23 |
sqler 문제 풀이.
sqler 질문글..
아래처럼 풀이해봤음.
/*
col1 | col2
1 10
2 20
3 30
4 40
*/
;with tb
as
(
select 1 as col1, 10 as col2
union
select 2 as col1, 20 as col2
union
select 3 as col1, 30 as col2
union
select 4 as col1, 40 as col2
)
select case when col = 1 then tmp1.col1 else tmp2.col11 end as col1,
case when col = 1 then tmp1.col2 else tmp2.col22 end as col2
from ( values( 1),( 2 ) ) as tab ( col )
left join
(
select 1 as k, col1, col2
from tb
) as tmp1
on tab.col = tmp1.k
left join
(
select 2 as k, count( col1 ) as col11, sum( col2 ) as col22
from tb
) as tmp2
on tab.col = tmp2.k
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
SSMS 에러 해결방법!! (0) | 2021.02.16 |
---|---|
sqler에 올라온 질문글... (0) | 2016.09.12 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.20 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.13 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.11 |
sqler에 올라온 질문글...
sqler에 질문글..
http://www.sqler.com/bSQLQA/862019
심심해서....
;with tmp
as
(
select *
from
(
values
(1, '2008-01-02 00:00:00.000' ),
(2, NULL),
(3, NULL),
(4, '2008-01-03 00:00:00.000'),
(5, NULL),
(6, NULL),
(7, NULL),
(8, NULL),
(9, '2008-01-04 00:00:00.000'),
(10, NULL),
(11, NULL)
) as tb (a, b )
)
select a, isnull( b , ( select max( b ) from tmp where a < bs.a )) as bb
from tmp as bs
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
SSMS 에러 해결방법!! (0) | 2021.02.16 |
---|---|
sqler 문제 풀이. (0) | 2017.05.22 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.20 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.13 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.11 |
Sqler에 있는 질문에 대해 풀어봤다.
피벗으로 하는 건데...
문제 차제가 조금 데이타가 부족해보였다.
그림에 보이는데로 나오는 걸 일부 수정해서 풀었지만...
동적으로 늘어나는 데이타 컬럼에 대해서 처리를 위해 동적쿼리를 만들어야 되는데...
과연? 얼마나 사이즈가 늘어날지는 실 데이타로 처리 해봐야 하니 .. 모르겠고,
문제 : http://www.sqler.com/828698#1
## 첫풀이 : 공백으로 처리 했지만 char(10)으로 바꾸면 enter값을 넣어서 뿌리는 건 비슷하게 나온다.
;with tb
as
(
SELECT ITEM_CD, SPEC, SO_DT + ' ' + DLVY_DT + ' '+ SOLD_TO_PARTY_NM as HD, SO_QTY
FROM (
VALUES
( '41-P006-IVM', 'GAP-6 IV', '2016-05-10', '2016-05-13', 'TMEH-J', 2400 ),
( '41-P006-IVM', 'GAP-6 IV', '2016-05-12', '2016-05-20', 'TMEH-J', 4800 ),
( '41-P006-IVM', 'GAP-6 IV', '2016-05-17', '2016-05-20', 'TMEH-J', 10800 ),
( '41-P006-IVM', 'GAP-6 IV', '2016-05-13', '2016-05-20', 'AXIS', 2400 )
) AS TB ( ITEM_CD, SPEC, SO_DT, DLVY_DT, SOLD_TO_PARTY_NM, SO_QTY )
)
SELECT *
from tb
pivot
(
sum( SO_QTY ) for HD in (
[2016-05-13 2016-05-20 AXIS],
[2016-05-10 2016-05-13 TMEH-J],
[2016-05-12 2016-05-20 TMEH-J],
[2016-05-17 2016-05-20 TMEH-J]
)
) as pt
## 두번째 풀이 : 헤더값을 결과로 만들어 Union 처리 하는 방법.
;with tb
as
(
SELECT ITEM_CD, SPEC, SO_DT, DLVY_DT, SOLD_TO_PARTY_NM, SO_QTY
FROM (
VALUES
( '41-P006-IVM', 'GAP-6 IV', '2016-05-10', '2016-05-13', 'TMEH-J', 2400 ),
( '41-P006-IVM', 'GAP-6 IV', '2016-05-12', '2016-05-20', 'TMEH-J', 4800 ),
( '41-P006-IVM', 'GAP-6 IV', '2016-05-17', '2016-05-20', 'TMEH-J', 10800 ),
( '41-P006-IVM', 'GAP-6 IV', '2016-05-13', '2016-05-20', 'AXIS', 2400 )
) AS TB ( ITEM_CD, SPEC, SO_DT, DLVY_DT, SOLD_TO_PARTY_NM, SO_QTY )
), src
as
(
select ITEM_CD, SPEC, SO_DT + ' ' + DLVY_DT +' '+ SOLD_TO_PARTY_NM as HD, SO_QTY
from tb
), hd1
as
(
select ITEM_CD, SPEC, SO_DT + ' ' + DLVY_DT +' '+ SOLD_TO_PARTY_NM as HD, SO_DT
from tb
)
, hd2
as
(
select ITEM_CD, SPEC, SO_DT + ' ' + DLVY_DT +' '+ SOLD_TO_PARTY_NM as HD, DLVY_DT
from tb
)
, hd3
as
(
select ITEM_CD, SPEC, SO_DT + ' ' + DLVY_DT +' '+ SOLD_TO_PARTY_NM as HD, SOLD_TO_PARTY_NM
from tb
)
select *, 1 as odr--ITEM_CD, SPEC, [2016-05-13 2016-05-20 AXIS],[2016-05-10 2016-05-13 TMEH-J],[2016-05-12 2016-05-20 TMEH-J],[2016-05-17 2016-05-20 TMEH-J]
from hd1
pivot
(
min( SO_DT ) for HD in (
[2016-05-13 2016-05-20 AXIS],
[2016-05-10 2016-05-13 TMEH-J],
[2016-05-12 2016-05-20 TMEH-J],
[2016-05-17 2016-05-20 TMEH-J]
)
) as pt
union
select *, 2 as odr--ITEM_CD, SPEC, [2016-05-13 2016-05-20 AXIS],[2016-05-10 2016-05-13 TMEH-J],[2016-05-12 2016-05-20 TMEH-J],[2016-05-17 2016-05-20 TMEH-J]
from hd2
pivot
(
min( DLVY_DT ) for HD in (
[2016-05-13 2016-05-20 AXIS],
[2016-05-10 2016-05-13 TMEH-J],
[2016-05-12 2016-05-20 TMEH-J],
[2016-05-17 2016-05-20 TMEH-J]
)
) as pt
union
select *, 3 as odr--ITEM_CD, SPEC, [2016-05-13 2016-05-20 AXIS],[2016-05-10 2016-05-13 TMEH-J],[2016-05-12 2016-05-20 TMEH-J],[2016-05-17 2016-05-20 TMEH-J]
from hd3
pivot
(
min( SOLD_TO_PARTY_NM ) for HD in (
[2016-05-13 2016-05-20 AXIS],
[2016-05-10 2016-05-13 TMEH-J],
[2016-05-12 2016-05-20 TMEH-J],
[2016-05-17 2016-05-20 TMEH-J]
)
) as pt
union
select ITEM_CD, SPEC,
convert(varchar,[2016-05-13 2016-05-20 AXIS]),
convert(varchar,[2016-05-10 2016-05-13 TMEH-J]),
convert(varchar,[2016-05-12 2016-05-20 TMEH-J]),
convert(varchar,[2016-05-17 2016-05-20 TMEH-J]),
9999 as odr
from src
pivot
(
sum( SO_QTY ) for HD in (
[2016-05-13 2016-05-20 AXIS],
[2016-05-10 2016-05-13 TMEH-J],
[2016-05-12 2016-05-20 TMEH-J],
[2016-05-17 2016-05-20 TMEH-J]
)
) as pt
order by odr
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
sqler 문제 풀이. (0) | 2017.05.22 |
---|---|
sqler에 올라온 질문글... (0) | 2016.09.12 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.13 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.11 |
경고: 집계 또는 다른 ... 어쩌고 저쩌고 (0) | 2016.02.17 |
Sqler에 있는 질문에 대해 풀어봤다.
문제1 ) http://www.sqler.com/827048#4
/* 100000과 가장 가까운 근사치값을 구할때 */
select n, v, abs( v - 100000 )
from (
values
(1, 1000 ),
(2, 2300 ),
(3, 1000 ),
(4, 5000 ),
(5, 16000 ),
(6, 54000 ),
(7, 8200 ),
(8, 1500 ),
(9, 2555 )
) as tb( n, v )
order by 3
이렇게 하면 가장 가까운게 위로 올라온다.
문제2 ) http://www.sqler.com/bSQLQA/827651
피봇으로 데이타를 만들때 내부 데이타가 집계가 아닌 실제 원소데이타를 포함하도록 뿌려달라는 것 같다.
declare @ttb table
(
TESTBENCH int,
TESTWEEK varchar(100),
TESTNAME varchar(100)
)
insert into @ttb
select *
from
(
values
(1, 'W1618.1', 'TEST1'),
(1, 'W1618.1', 'TEST2'),
(1, 'W1618.1', 'TEST3'),
(1, 'W1618.2', 'TEST1'),
(1, 'W1618.3', 'TEST2'),
(2, 'W1618.2', 'TEST1'),
(2, 'W1618.2', 'TEST3'),
(2, 'W1618.3', 'TEST2'),
(2, 'W1618.4', 'TEST2'),
(2, 'W1618.4', 'TEST3')
) as tb (TESTBENCH, TESTWEEK, TESTNAME )
declare @TESTBENCH int
declare @W1 varchar(100), @W2 varchar(100), @W3 varchar(100), @W4 varchar(100)
declare @result table
(
TESTBENCH int,
[W1618.1] varchar(100),
[W1618.2] varchar(100),
[W1618.3] varchar(100),
[W1618.4] varchar(100)
)
declare rst cursor
for
select TESTBENCH, [W1618.1], [W1618.2], [W1618.3], [W1618.4]
from @ttb
pivot
(
count( TESTNAME ) for TESTWEEK in ( [W1618.1], [W1618.2], [W1618.3], [W1618.4] )
) as p
OPEN rst
FETCH NEXT FROM rst
INTO @TESTBENCH, @W1, @W2, @W3, @W4
WHILE @@FETCH_STATUS = 0
BEGIN
select @W1 = '', @W2 = '', @W3 = '', @W4 = ''
select @W1 += TESTNAME + char(10)
from @ttb
where TESTBENCH = @TESTBENCH
and TESTWEEK = 'W1618.1'
select @W2 += TESTNAME + char(10)
from @ttb
where TESTBENCH = @TESTBENCH
and TESTWEEK = 'W1618.2'
select @W3 += TESTNAME + char(10)
from @ttb
where TESTBENCH = @TESTBENCH
and TESTWEEK = 'W1618.3'
select @W4 += TESTNAME + char(10)
from @ttb
where TESTBENCH = @TESTBENCH
and TESTWEEK = 'W1618.4'
insert into @result
select @TESTBENCH, @W1, @W2, @W3, @W4
FETCH NEXT FROM rst
INTO @TESTBENCH, @W1, @W2, @W3, @W4
END
CLOSE rst;
DEALLOCATE rst;
select *
from @result
커서를 이용하면 되긴 하는데 고정 컬럼으로 만들었을때 위와 같고, 가변적으로 해야 할때는 부분부분 function으로 동작할수 있게 하고 줄여서
동적 쿼리로 만들어주면 된다.
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
sqler에 올라온 질문글... (0) | 2016.09.12 |
---|---|
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.20 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.11 |
경고: 집계 또는 다른 ... 어쩌고 저쩌고 (0) | 2016.02.17 |
MS-SQL] 코드트리 + 상세내역에 코드별 합계쿼리. (0) | 2013.02.26 |