Ваш вопрос о GROUP-BY
& OUTPUT result сбивает с толку.
B'cz GROUP-BY
слится Результат Row-1 & 2 .
Но для вашего лучшего результата вы можете попробовать следующие вопросы для гарантии.
Создать определение таблицы
Create table Table1
(
col1 varchar(10),
col2 int,
col3 int,
col4 varchar(10),
col5D int,
col6D int,
col7D int,
col8D int
)
GO
insert into Table1
values('Abc',0,1,'John',0,0,0,0)
GO
insert into Table1
values('Abc',1,2,'John',1,0,0,0)
GO
insert into Table1
values('Abc',2,3,'John',0,0,0,0)
GO
insert into Table1
values('Abc',3,4,'John',0,1,0,0)
GO
insert into Table1
values('Xyz',0,1,'Ron',0,0,0,0)
GO
insert into Table1
values('Xyz',1,2,'Ron',0,0,0,0)
GO
insert into Table1
values('Xyz',2,3,'Ron',0,0,1,0)
GO
insert into Table1
values('Xyz',3,4,'Ron',0,0,0,0)
Результат ① → Как показано в Ожидаемый результат , вам следует попробовать этот запрос.
SELECT
COL1, COL2, COL3, COL4,
CASE
WHEN ISNULL(COL5D,0) > 0 THEN 'COL5D'
WHEN ISNULL(COL6D,0) > 0 THEN 'COL6D'
WHEN ISNULL(COL7D,0) > 0 THEN 'COL7D'
WHEN ISNULL(COL8D,0) > 0 THEN 'COL8D' END
As ColRes
FROM TABLE1
WHERE ISNULL(COL5D,0) > 0 OR ISNULL(COL6D,0) > 0 OR ISNULL(COL7D,0) > 0 OR ISNULL(COL8D,0) > 0
Тогда вывод будет: (избегайте использования GROUP-BY
)
Результат ② → Как показано в Вопрос для использования GROUP-BY
, тогда Вы должны попробовать этот запрос.
SELECT
COL1, MIN(COL2) AS COL2, MIN(COL3) AS COL3, COL4 AS COL4,
MAX(CASE
WHEN ISNULL(COL5D,0) > 0 THEN 'COL5D'
WHEN ISNULL(COL6D,0) > 0 THEN 'COL6D'
WHEN ISNULL(COL7D,0) > 0 THEN 'COL7D'
WHEN ISNULL(COL8D,0) > 0 THEN 'COL8D' END
) As ColRes
FROM TABLE1
WHERE ISNULL(COL5D,0) > 0 OR ISNULL(COL6D,0) > 0 OR ISNULL(COL7D,0) > 0 OR ISNULL(COL8D,0) > 0
GROUP BY COL1,COL4
Тогда вывод будет: (Использование GROUP-BY
)
Примечание : Пожалуйста, исправьте ожидаемый результат / вопрос и проверьте правильный результат в качестве ответа, иначе другие пользователи будут сбиты с толку.