binu.emiliya Ответов: 2

Как преобразовать строки в столбцы в SQL


Привет,

У меня есть таблица, как показано ниже
CANDIDATEID  SUB                     SUBID 	   MARK	   TOTAL_QUESTIONS
      41	 IT	                        1	    6	   14
      41	 MATH	                    2	    3	   10
      41	 ENGLISH READING            3	    4	   10
      41	 ENGLISH GRAMMER            4	    3	   15
      42	 IT	                     1	    3	   14
      42	 MATH	                    2	    2	   10


Я хочу транспонировать его как excel

CANDIDATEID IT_MARKS MATH_MARKS ER_MARKS EG_MARKS T_QNS_IT T_QNS_MATH T_QNS_ER T_QNS_EG
41            6           3          4         3   14       10         10       15
42            3           2         NULL      NULL 14       10         10       15


Пожалуйста, помогите мне, как это сделать.Я не очень хорош в расспросах

Что я уже пробовал:

Я пробовал с SQL-поворотом,но не сработало

Santosh kumar Pithani

Здравствуйте,использовать поворота

2 Ответов

Рейтинг:
4

Santosh kumar Pithani

CREATE TABLE #temp (
CANDIDATEID int, SUB   varchar(500), UBID  INT,MARK	 INT,TOTAL_QUESTIONS int)
INSERT INTO #TEMP 
values
      (41,'IT',1,6,14),
      (41,'MATH',2,3,10),
      (41,'ENGLISH READING',3,4,10),
      (41,'ENGLISH GRAMMER',4,3,15),
      (42,'INFORMATION TECHNOLOGY',1,3,14),
      (42,'MATH',2,2,10);


WITH CTE AS (
SELECT CANDIDATEID,CASE WHEN SUB IN ('INFORMATION TECHNOLOGY','IT') THEN 'IT' ELSE SUB END AS SUB,MARK  FROM #TEMP
UNION 
SELECT CANDIDATEID,'T_QNS_'+CASE WHEN SUB IN ('INFORMATION TECHNOLOGY','IT') THEN 'IT' ELSE SUB END AS SUB,TOTAL_QUESTIONS FROM #TEMP
)


select CANDIDATEID,[IT],[MATH],[ENGLISH READING], [ENGLISH GRAMMER],
     [T_QNS_IT],[T_QNS_MATH],[T_QNS_ENGLISH GRAMMER],[T_QNS_ENGLISH READING]

from CTE
 
 PIVOT 
    (  MAX(MARK) FOR SUB IN ( 
     [ENGLISH GRAMMER],[ENGLISH READING],[INFORMATION TECHNOLOGY],[IT],[MATH],
     [T_QNS_ENGLISH GRAMMER],[T_QNS_ENGLISH READING],[T_QNS_INFORMATION TECHNOLOGY],[T_QNS_IT],[T_QNS_MATH]
	                        )
	) AS ff


binu.emiliya

Привет, Сантош, большое тебе спасибо. Я сделал ошибку в своем вопросе.И то и другое я просто укоротил в первом ряду и забыл сменить в следующем

binu.emiliya

Спасибо,он работает нормально

Animesh Datta

Мои 5! за ваши усилия .

Santosh kumar Pithani

Спасибо!

Santosh kumar Pithani

Добро пожаловать, Бину!

Рейтинг:
2

binu.emiliya

Спасибо