Как получить необходимую запись с определенной таблицей - PullRequest
0 голосов
/ 16 ноября 2018

Привет, моя структура таблицы показана ниже

введите описание изображения здесь

и с SQL-запросом я хочу сделать это как ниже формат структуры

введите описание изображения здесь

Я должен сделать это с помощью одного SQL-запроса.

В настоящее время я сделал это с помощью функции Excel Могу ли я получить какие-либо предложения?

Questionid  Response        Response
   1        HighlyEngaged   HighlyEngaged
   2        VeryPrepared    VeryPrepared
   2        VeryPrepared1   VeryPrepared1

 to

 RowLabels        Count of Response
  1                1
  HighlyEngaged    1
  2                2 
  VeryPrepared     1
  VeryPrepared1    1

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018
drop table #teee
CREATE TABLE #teee
    ([Questionid] int, [Response] varchar(13), [Response1] varchar(13))
;

INSERT INTO #teee
    ([Questionid], [Response], [Response1])
VALUES
    (1, 'HighlyEngaged', 'HighlyEngaged'),
    (2, 'VeryPrepared', 'VeryPrepared'),
    (2, 'VeryPrepared1', 'VeryPrepared1')
;

select res,cnt from (select [Questionid],cast([Questionid]as varchar(100)) res ,count([Response]) cnt from #teee
group by [Questionid]
union all
select [Questionid],cast([Response]as varchar(100)) res,count([Response]) r1 from #teee
group by [Questionid],[Response])a
order by [Questionid],res

следующее обновление для ответа, данного Йогеш Шарма

select isnull([Response],[Questionid]),total from (select [Questionid], [Response], count(*) total
from #teee t  
group by [Questionid], [Response] with rollup) a
where  isnull([Response],[Questionid]) is not null
order by [Questionid],1 
0 голосов
/ 16 ноября 2018

Я подготовил следующий запрос, думаю, он может вам помочь:

DROP TABLE QA
GO
CREATE TABLE QA
(
    Questionid  INT
    ,Response   VARCHAR(100) 
)

INSERT INTO QA
    VALUES(1,'HighlyEngaged')
   ,(2,'VeryPrepared' )
   ,(5,'Asked' )
   ,(5,'Priority' )
   ,(5,'Explained' )
   ,(8,'Yes' )
   ,(9,'Set Agenda' )
   ,(9,'Take Atten' )
   ,(11,'Assigned')
   ,(11,'Individual')
   ,(12,'Predict')
   ,(12,'Questions')

SELECT
    CASE
        WHEN Response = '' THEN CAST(QuestionId AS VARCHAR)
        ELSE ''
    END QId
   ,Response
   ,ResponseTotal
FROM (SELECT
        QuestionId
       ,'' Response
       ,COUNT(Response) ResponseTotal
    FROM QA
    GROUP BY QuestionId
    UNION ALL
    SELECT
        QuestionId
       ,Response
       ,COUNT(1)
    FROM QA
    GROUP BY QuestionId
            ,Response) a
ORDER BY QuestionId, CASE
    WHEN Response = '' THEN 0
    ELSE 1
END
0 голосов
/ 16 ноября 2018

Вы можете использовать roll up с агрегацией:

select questionid, Response, count(*)
from table t  
group by questionid, Response with roll up;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...