어쩌면이 도움이 될 것입니다
우선 몇 가지 테스트 데이터 :
CREATE TABLE tbl
(
DEPT_NAME VARCHAR(200),
EMP_NAME VARCHAR(200),
DESIGNATION VARCHAR(200),
[DAY] DATE,
FIRST_SHIFT INT,
SECOND_SHIFT INT,
THIRD_SHIFT INT,
GENERAL_SHIFT INT
)
INSERT INTO tbl
VALUES
('C & I','DHAS YOGESH BABASAHEB','Diploma - Sr. Technician','01-3-13',0,0,0,0),
('C & I','DHAS YOGESH BABASAHEB','Diploma - Sr. Technician','02-3-13',0,0,0,0),
('C & I','DHAS YOGESH BABASAHEB','Diploma - Sr. Technician','03-3-13',0,0,0,0)
concating 고유 열 :
DECLARE @cols VARCHAR(MAX)
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY tbl.[DAY] ORDER BY tbl.[DAY]) AS rowNbr,
tbl.[DAY]
FROM
tbl
)
SELECT @cols=STUFF
(
(
SELECT
',' +QUOTENAME([DAY])
FROM
CTE
WHERE
CTE.rowNbr=1
FOR XML PATH('')
)
,1,1,'')
그런 다음 동적 SQL 실행 :
DECLARE @query NVARCHAR(4000)=
N'SELECT
*
FROM
(
SELECT
tbl.DEPT_NAME,
tbl.EMP_NAME,
tbl.DESIGNATION,
tbl.[DAY],
(
CAST(tbl.FIRST_SHIFT AS VARCHAR(10))+'' ''+
CAST(tbl.SECOND_SHIFT AS VARCHAR(10))+'' ''+
CAST(tbl.THIRD_SHIFT AS VARCHAR(10))+'' ''+
CAST(tbl.GENERAL_SHIFT AS VARCHAR(10))
) AS SHIFT
FROM
tbl
) AS p
PIVOT
(
MAX(SHIFT) FOR [DAY] IN('[email protected]+')
) AS pvt'
EXECUTE(@query)
을
그리고 내 c ASE는 생성 된 테이블을 삭제 :
DROP TABLE tbl
출력은 다음과 같습니다
DEPT_NAME EMP_NAME DESIGNATION 2013-01-03 2013-02-03 2013-03-03
C & I DHAS YOGESH BABASAHEB Diploma - Sr. Technician 0 0 0 0 0 0 0 0 0 0 0 0
어떤 열 당신이 피벗 하시겠습니까? 명명 날짜는 머리글 오른쪽에 원하는 것입니다. 하지만 그 가치는 FIRST_SHIFT입니까? 너 뭐 해봤 니? [msdn] (http://technet.microsoft.com/en-us/library/ms177410 (v = sql.105) .aspx) 및 SO – Arion
에 많은 예제가 있습니다. 안녕하십니까. 답장을 보내 주셔서 감사합니다. 나는 하루 칼럼을 가지고있다. 하루에 나는 4 교대가있다. 그래서 헤더에있는 날 열을 옮기고 싶습니다. 그리고 4 교대는 쉼표 구분 기호로 연속적으로 나타납니다. – user3377919