Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
имеется 2 таблицы
1 таблица имеет вид

id time
1 1000
2 500
3 700
4 900
5 800
6 800
и т.д.

необходимо записать в ячейку сумму 1,2,3,4, во 2 ячейку записать сумму 5,6,7,8 и т.д.
23 ноя 15, 14:31    [18459714]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
необходимо записать в ячейку сумму 1,2,3,4, во 2 ячейку записать сумму 5,6,7,8 и т.д.

И с чем именно у вас возникла проблема ?
23 ноя 15, 14:34    [18459739]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
Glory,

да что то догнать не могу как это сделать.
select sum(time) from table1 where id=??

вот как это прописать
23 ноя 15, 14:36    [18459748]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
dantist443,

где эти "ячейки" располагаются?
23 ноя 15, 14:37    [18459759]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
GROUP BY (id-1)%4
23 ноя 15, 14:40    [18459776]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
iap,

ячейки во второй таблицы,
ну создал 2 таблицу (table2- par1 varchar (200), par2 varchar (200), и т.д.)
пытаюсь в нее внести данные
insert into table2 (par1, par2)
values
(select sum(time) from table1 where id=??,
select sum(time) from table1 where id=??
)
23 ноя 15, 14:41    [18459784]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
да что то догнать не могу как это сделать.
select sum(time) from table1 where id=??


вот как это прописать

select sum(time) from table1 where id IN(1,2,3,4)
23 ноя 15, 14:43    [18459797]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
мои 5 копеек.
declare @temp_table table (
	id int primary key,
	sum_column int)

insert into @temp_table (id, sum_column) values (1, 0);
insert into @temp_table (id, sum_column) values (2, 0);
insert into @temp_table (id, sum_column) values (3, 0);
insert into @temp_table (id, sum_column) values (4, 0);
insert into @temp_table (id, sum_column) values (5, 0);

with tbl_Main as (
	select id,
			sum_column,
			((id-1)*4 + 1) + ((id-1)*4 + 2) + ((id-1)*4 + 3) + ((id-1)*4 + 4) as TotalColumn
		from @temp_table
)

merge @temp_table as Target
using (select id, TotalColumn from tbl_Main)
as Source
on (Target.id = Source.id)
when matched then update set Target.sum_column = Source.TotalColumn;

select * from @temp_table;
23 ноя 15, 14:43    [18459801]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
Glory, там слишком много значений что бы так переписывать
23 ноя 15, 14:45    [18459809]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
там слишком много значений что бы так переписывать

Напишите цикл
Все равно одним запросом вы "слишком много значений" из строк в разные поля не занесёте
23 ноя 15, 14:49    [18459834]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
Glory,

INSERT INTO table2
VALUES
(SELECT (id-4)/4, SUM (TIME) FROM table1 GROUP BY (id-4)/4)

такой способ не проканает
23 ноя 15, 15:27    [18460129]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
Glory,

INSERT INTO table2
VALUES
(SELECT (id-4)/4, SUM (TIME) FROM table1 GROUP BY (id-4)/4)


такой способ не проканает

Здесь все вставляется в одну "ячейку"
23 ноя 15, 15:28    [18460139]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
Glory, подскажите, как тогда задать условие циклу
23 ноя 15, 15:36    [18460212]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
Glory, подскажите, как тогда задать условие циклу

Руками. Согласно синатксису циклов в TSQL
23 ноя 15, 15:41    [18460251]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
Glory, да я само условие никак не могу додумать, как написать - это не проблема. Логически додуматься не могу
23 ноя 15, 15:49    [18460308]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
dantist443
имеется 2 таблицы
1 таблица имеет вид

id time
1 1000
2 500
3 700
4 900
5 800
6 800
и т.д.

необходимо записать в ячейку сумму 1,2,3,4, во 2 ячейку записать сумму 5,6,7,8 и т.д.


А чем 1,2,3,4 отличается от 5,6,7,8? Почему не 1,2,3 и 4,5,6,7,8?
23 ноя 15, 15:54    [18460349]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
Glory, да я само условие никак не могу додумать, как написать - это не проблема. Логически додуматься не могу

В таблице может быть 1024 столбца. Это ограничение сервера.
23 ноя 15, 15:58    [18460375]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
dantist443
Member

Откуда:
Сообщений: 39
Glory, сущестdует какая либо проверка на целочисленность, например

if id%4= делится без остатка
то выполняем 1, если остаток есть то выполняем другое
23 ноя 15, 16:21    [18460525]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
Glory
Member

Откуда:
Сообщений: 104751
dantist443
if id%4= делится без остатка
то выполняем 1, если остаток есть то выполняем другое

Вообщето id%4 как раз и дает _остаток_ от деления
23 ноя 15, 16:27    [18460560]     Ответить | Цитировать Сообщить модератору
 Re: помощь с sum  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
iap
GROUP BY (id-1)%4
Посыпаю голову пеплом
Непростительная ошибка. Конечно же, я думал о
GROUP BY (id-1)/4
23 ноя 15, 16:30    [18460573]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить