Member 12245539 Ответов: 1

Как объединить две строки в одну строку SQL server


У меня есть таблица а она содержит 4 столбца как указано ниже
ID | SUBJECT  | MARKS1 | MARKS2 | 
1  | ENGLISH  | 10     | 20     |
2  | HINDI    | 20     | 30     |
3  | PHYSICS  | 10     | 10     |
4  | CHEMISTRY| 20     | 20     |
6  | BIOLOGY  | 10     | 10     |
7  | MATHS    | 5      | 25     |


Я хочу объединить физику,химию и биологию в один ряд и хочу получить результат в виде

SUBJECT  | MARKS1 | MARKS2 |  TOTAL  |
ENGLISH  | 10     | 20     |  30     |
HINDI    | 20     | 30     |  50     |
SCIENCE  | 10     | 10     |  80     |
MATHS    | 5      | 25     |  30     |


Пожалуйста, помогите кому-нибудь

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

.................................... -----------------------------------------------------------------------------

ZurdoDev

Выберите *, (выберите COUNT(*) из таблицы, где subject = t1.subject) в качестве итога
Из таблицы Т1

или присоединиться к производной таблице
Выберите *, x.итого
Из табл. 1 Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
Выберите тему, подсчитайте(*) как общее количество
) х на Т1.предметом = х. тема

1 Ответов

Рейтинг:
5

Richard Deeming

Кажется достаточно простым - вам просто нужно CASE заявление на карту на имя субъекта и GROUP BY чтобы сгруппировать строки с одним и тем же предметом.

Единственная немного сложная часть заключается в том, что вы должны повторить CASE заявление в суде GROUP BY пункт.

SELECT
    CASE
        WHEN Subject In ('PHYSICS', 'CHEMISTRY', 'BIOLOGY') THEN 'SCIENCE'
        ELSE Subject
    END As Subject,
    Sum(Marks1) As Marks1,
    Sum(Marks2) As Marks2,
    Sum(Marks1 + Marks2) As Total
FROM
    YourTable
GROUP BY
    CASE
        WHEN Subject In ('PHYSICS', 'CHEMISTRY', 'BIOLOGY') THEN 'SCIENCE'
        ELSE Subject
    END
;


Maciej Los

5ed!

Member 12245539

5-звездный