В SQL Count количество различных значений, соответствующих одному и тому же идентификатору и DISPLAY в одной строке

В этом случае, вероятно, использование концепции экспресс-промежуточного программного обеспечения (вызов next()) будет излишним.

Я бы подошел к этому, создав абстракцию для пути успеха. Рассмотрим что-то вроде этого:

const resWithSuccess = (req, res, data) => {
    res.json({
      data: data,
      timestamp: new Date().toUTCString(),
      // success: res.statusCode < 400, // --> actually you don't need this,
      //                                       since it will always be true
      // status: res.statusCode // --> or whatever else "meta" info you need
    });
};

Затем, как только вам нужно будет откликаться на успех, перейдите к нему:

exports.getTask = async function (req, res, next) {
    // .... bla bla
    if (task) {
        resWithSuccess(tank);
    }
};

PS: ... и вы можете использовать концепцию экспресс-промежуточного программного обеспечения (вызов next()) для пути ошибки.

0
задан marc_s 19 January 2019 в 08:49
поделиться

2 ответа

Это требует предварительной агрегации и агрегирования строк.

with t as (
      select id, question, count(*) as cnt
      from t
      group by id
     )
select i.id,
       stuff( (select ', ' + convert(varchar(255), cnt) + ' ' + question
               from t t2
               where t2.id = i.id
               for xml path ('')
              ), 1, 2, ''
            ) as result
from (select distinct id from t) i;
0
ответ дан Gordon Linoff 19 January 2019 в 08:49
поделиться


--testdata-begin
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([id] int,[Question] nvarchar(23))
Insert #T
select 13,N'ABC' union all
select 13,N'ABC' union all
select 13,N'QWE' union all
select 13,N'ABC' union all
select 13,N'QWE' union all
select 13,N'ABC'
Go
--testdata-end
WITH cte AS  (
Select id,Question,COUNT(1) AS num from #T GROUP BY id,Question
)
SELECT id,
       STUFF(
       (
           SELECT ',' + RTRIM(b.num) + ' ' + b.Question
           FROM cte b
           WHERE a.id = b.id
           FOR XML PATH('')
       ),
       1,
       1,
       ''
            ) AS Result
FROM cte a
GROUP BY id;
0
ответ дан 薛建东 19 January 2019 в 08:49
поделиться