T-SQL

test12

как можно сделать 1 BEGIN TRAN INSERT INTO *********** TRAN INSERT INTO TABLE2 COMMITROLLBACKчтобы INSERT INTO TABLE2 сраболало2 Есть таблица TABLE1 содержимое 2 колонкиGROUP SUMMA 5 100 6 50 5 100 6 50Как написать SELECT с SUM чтобы получилось 2 колонки и 1 строка SUMMA_5 SUMMA_6 200 50SELECT sum (case Group = 5 then Summa else 0) as SUMMA_5 , sum (case Group = 6 then Summa else 0) as SUMMA_6получаетсяSUMMA_5 SUMMA_6 200 0 0 50Спасибо за помощь
5 ответов

test12

Simple CASE function:CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE function:CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END


test12

Сории до конца проблему не дочитал. Ну я в таких случаях применяю Group By и Sum


test12

1.как можно сделать Никак. Все вложенные транзакции откатяться.Можно сначала складывать данные в таблицу переменную. На них не действуют транзакции.2
Есть таблица TABLE1 содержимое 2 колонкиGROUP SUMMA 5 100 6 50 5 100 6 50Как написать SELECT с SUM чтобы получилось 2 колонки и 1 строка SUMMA_5 SUMMA_6 200 50SELECT sum (case Group = 5 then Summa else 0) as SUMMA_5 , sum (case Group = 6 then Summa else 0) as SUMMA_6получаетсяSUMMA_5 SUMMA_6 200 0 0 50Спасибо за помощь
У меня лично ваш запрос
declare @table1 table([group] int, summa int)

insert @table1 
select <b>5</b>, <b>100</b>
union all select <b>6</b>, <b>50</b>
union all select <b>5</b>, <b>100</b>
union all select <b>6</b>, <b>50</b>

SELECT sum (case when [Group] = <b>5</b> then Summa else <b>0</b> end) as SUMMA_5 , 
 sum (case when [Group] = <b>6</b> then Summa else <b>0</b> end) as SUMMA_6
from @table1
возвращает одну запись.Значит вы что-то недоговариваете.


test12

Спасибо GLORY за помощь просто в запросе я ставил первое поле groupпо поводу первого вопросау меня такая ситуацияесть таблица 1 с кодамиесть таблица 2 с кодами и суммами ~1 млня делаю так begin transelect code1 from table1select sum() from table2 where code=code1update table1 where code1select code2 from table1select sum() from table2 where code=code2update table1 where code2select code3 from table1select sum() from table2 where code=code3update table1 where code3...commitдля сохранения предыдущего расчета в таблице1 если произойдет ошибкаХотя я понимаю что надо сделать сначала join по кодам и сделать sumза один проход по всем кодам может есть какие-то мысли или идеи с примерами.


test12

Хотя я понимаю что надо сделать сначала join по кодам и сделать sumза один проход по всем кодам Ну так если понимаете то в чем проблема тогда ? Вложенных транзакций нет - откатывать или комитить придется все. Правда есть точки сохранения - SAVE TRANSACTION. Возможно они вам помогут.