powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / -
5 сообщений из 5, страница 1 из 1
-
    #32032145
Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить произведение значений столбца, что-то типа
select id, Произведение(value) from table
group by id
...
Рейтинг: 0 / 0
-
    #32032170
mamba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лобовое решение не претендую на оригинальность:
речь идёт о SQL Server 2000

--создаю таблицу для теста
if exists(select * from sysobjects where name='Tbl')
drop table Tbl
go
create table Tbl(
id int not null,
value int not null)
go
-- тестовые данные
insert into Tbl([id],[value]) values(9,8)
insert into Tbl([id],[value]) values(9,3)
insert into Tbl([id],[value]) values(8,3)
insert into Tbl([id],[value]) values(9,6)
insert into Tbl([id],[value]) values(9,3)
insert into Tbl([id],[value]) values(5,9)
insert into Tbl([id],[value]) values(5,3)
insert into Tbl([id],[value]) values(4,8)
insert into Tbl([id],[value]) values(3,3)
insert into Tbl([id],[value]) values(3,9)
insert into Tbl([id],[value]) values(7,7)
insert into Tbl([id],[value]) values(6,5)
insert into Tbl([id],[value]) values(6,7)
insert into Tbl([id],[value]) values(6,9)
insert into Tbl([id],[value]) values(8,6)
insert into Tbl([id],[value]) values(6,7)
insert into Tbl([id],[value]) values(2,4)
insert into Tbl([id],[value]) values(7,7)
insert into Tbl([id],[value]) values(7,3)
go
if exists(select * from sysobjects where name='Mul')
drop function Mul
go
-- функция для получения произведения значений с заданным id
create function Mul(@id int)
returns int
as
begin

declare @res int
declare @id_fetch int
select @res=1

declare tlb_cursor cursor FORWARD_ONLY READ_ONLY
for select [value] from Tbl where id=@id

open tlb_cursor
fetch next from tlb_cursor into @id

while @@FETCH_STATUS=0
begin
select @res=@res*@id
fetch next from tlb_cursor into @id
end
close tlb_cursor
deallocate tlb_cursor
return (@res)
end
go
-- проверяем, вуаля :)
select distinct [id], dbo.Mul([id])
from Tbl
...
Рейтинг: 0 / 0
-
    #32032200
Denis.R.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create table #t
(col1 int identity,
col2 decimal(18,4))

insert into #t(col2)values(13.26)
insert into #t(col2)values(14.56)
insert into #t(col2)values(15.22)
insert into #t(col2)values(17.24)
insert into #t(col2)values(13.33)




SELECT POWER(10.0000,SUM(LOG10(col2))) as col3

FROM #t
WHERE col1<=5
...
Рейтинг: 0 / 0
-
    #32032206
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Denis.R:

USE tempdb
GO
CREATE TABLE DEMO (a int, b int)
GO
SET NOCOUNT ON
declare @i int
SET @i = 0
WHILE @i<10000
begin
insert into DEMO VALUES (@i % 1000, 100*RAND())
SET @i = @i + 1
end
GO
SELECT a, POWER(10.0000, SUM(LOG10(B))) FROM DEMO GROUP BY a
GO

:(
...
Рейтинг: 0 / 0
-
    #32032333
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jimmers:
Ne Rabotaet potomu chto ne podderjivautsa chisla bolshe 10^400, v Vashem primere sum(log(b))>400
:)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / -
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]