2016-03-01 5 views
0

У меня есть столбцы, такие как pagecount, convertpages и changedpages в таблице, а также многие другие столбцы.Как суммировать две колонки в sql без группы по

pagecount - сумма преобразованных страниц и измененных страниц.

Мне нужно выбрать все строки вместе с pagecount, и я не могу их группировать. Мне интересно, есть ли способ сделать это?

Этот товар является частью просмотра. так что могу ли я использовать другой оператор sql для приведения только суммы, а затем каким-то образом сделать его частью основного SQL-запроса?

спасибо.

+0

Не могли бы вы поделиться некоторыми данными примера и желаемым результатом? Я не уверен, что понимаю, что вы имеете в виду, когда нужно выбрать все строки вместе с pagecount, когда вы ранее сказали, что pagecount уже является частью таблицы. –

+0

Колонка больше не использовалась в лицевой части с изменением требований пользователей. они вводят только переведенные страницы и измененные страницы. но они хотят видеть объединенный счетчик страниц в своем отчете. Поэтому я решил использовать столбец для отправки данных в отчет. (в основном это не самый умный дизайн), но он работает сейчас. Спасибо, что пытались помочь. – lama

ответ

0
SELECT 
    *, 
    (ConvertedPages + ChangedPages) as PageCount 
FROM Table 
+0

Я чувствую себя глупо. но спасибо. – lama

0

Если я понять ваш вопрос правильно, в то время как я не знаю, почему вы не можете использовать group by, другой вариант будет использовать correlated subquery:

select distinct id, 
     (select sum(field) from yourtable y2 where y.id = y2.id) summedresult 
from yourtable y 

Это Предполагается, что вы есть данные, такие как:

id | field 
1 | 10 
1 | 15 
2 | 10 

И было бы эквивалентно:

select id, sum(field) 
from yourtable 
group by id 
0

Не 100% от того, что вы после этого, но если вы хотите всего несколько строк без группировки, вы можете использовать OVER() с агрегатом в SQL Server:

SELECT *, SUM(convertedpages) OVER() AS convertedpages 
    , SUM(changedpages) OVER() AS changedpages 
    , SUM(changedpages + convertedpages) OVER() as PageCount 
FROM Table 

Это повторяется общее для каждой строки вы можете использовать PARTITION BY внутри OVER(), если вы хотите, чтобы совокупность была сгруппирована по каким-либо полям, при этом отображая полную информацию о всех строках.

Смежные вопросы