2016-12-14 4 views
-1

У меня есть таблица со значениямизначения SUM в последней строке

+--------+------------+-------------+ 
    | XPK | Money  | NumOfDevices| 
    +--------+------------+-------------+ 
    |  1 | 1000  | 2   | 
    |  2 | 2000  | 3   | 
    |  3 | 3000  | 4   | 
    +--------+------------+-------------+ 

необходимости суммировать все значения и ввести звездочку «*» во всей строке, чтобы отделить общие значения от других значений, поэтому на результат нужно искать что-то например

 +--------+------------+-------------+ 
     | XPK | Money  | NumOfDevice | 
     +--------+------------+-------------+ 
     |  1 | 1000  | 2   | 
     |  2 | 2000  | 3   | 
     |  3 | 3000  | 4   | 
     |***********************************| 
     | TOTAL | 6000  | 9   | 
     +--------+------------+-------------+ 

Есть идеи?

+2

Это не то, что вы должен обрабатываться в конце базы данных ... Вы ищете способ дать итоговые значения, или действительно ли звездочки * действительно важны? – Siyual

+0

Простейшее решение: используйте UNION (первый запрос будет отображать содержимое таблицы, затем объединение, которое добавит «****», а затем объединение, которое суммирует значения (обратите внимание: все результаты ДОЛЖНЫ быть преобразованы в VARCHAR) – FDavidov

+0

Я буду избегать звездочки, но определенно нужны итоги в конце –

ответ

0

Самый простой способ для этого является использование UNION выбора суммы из таблицы:

Select Convert(Varchar (10), XPK) XPK, 
     Money, 
     NumOfDevices 
From YourTable 
Union 
Select 'TOTAL' As XPK, 
     Sum(Money), 
     Sum(NumOfDevices) 
From YourTable 
Order By Case When XPK = 'TOTAL' Then 1 Else 0 End, XPK 

Другой способ сделать это было бы использовать GROUP BY WITH ROLLUP

Select Case When Grouping(XPK) = 1 
      Then 'TOTAL' 
      Else Convert(Varchar (10), XPK) 
     End As XPK, 
     Sum(Money)   Money, 
     Sum(NumOfDevices) NumOfDevices 
From YourTable 
Group By XPK With Rollup 
Order By Grouping(XPK) 
+0

Нет никакой гарантии, что результат второго запроса в объединении будет заканчиваться как последняя строка. Все запросы без порядка по оператору считаются неупорядоченными. – Magnus

+0

@ Magnus Fair point - адрес. – Siyual

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