Как добавить итоговую строку в конце таблицы в t-sql? - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно добавить строку сумм в качестве последней строки таблицы.Например:

   book_name   |   some_row1   |   some_row2   |   sum   
---------------+---------------+---------------+----------
    book1      |   some_data11 |   some_data12 |   100
    book2      |   some_data21 |   some_data22 |   300
    book3      |   some_data31 |   some_data32 |   500
 total_books=3 |   NULL        |   NULL        |   900

Как я могу это сделать?(T-SQL)

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Попробуйте с ROLLUP

SELECT  CASE 
            WHEN (GROUPING([book_name]) = 1) THEN 'total_books'
            ELSE [book_name] END AS [book_name],some_row1, some_row2
        ,SUM(]sum]) as Total_Sales
From    Before
GROUP BY
        [book_name] WITH ROLLUP
0 голосов
/ 12 октября 2018

Я считаю, что grouping sets гораздо более гибок, чем rollup.Я бы написал так:

select coalesce(book_name,
                replace('total_books=@x', '@x', count(*))
               ) as book_name,
       col2, col3, sum(whatever)
from t
group by grouping sets ( (book_name), () );

Строго говоря, функция GROUPING с CASE лучше, чем COALESCE().Однако значения NULL на ключах группировки встречаются довольно редко.

0 голосов
/ 12 октября 2018

Вы можете использовать union all:

select book_name, some_row1, some_row2, sum 
from table t
union all
select cast(count(*) as varchar(255)), null, null, sum(sum)
from table t;

Однако, count(*) даст вам no of rows доступный в таблице, если book_name также имеет значение null, тогда вам нужно count(book_name) вместо count(*).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...