Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ElenaLeont Member Откуда: Екатеринбург Сообщений: 305 |
Добрый вечер! Готовлю таблицу фактов для OLAP. Кол-во записей 300000. В каждой записи есть поле dat и kod, мне нужно для каждой строки посмотреть сколько есть записей с таким же kod, но с меньшей dat и проставить пометки типа 1 - 0 таких записей, 2 - 1 запись и т.д. Не знаю как, мне это написать кроме следующего оооочень медленного кода :( UPDATE t SET nal_sz = 1 FROM t WHERE dbo.AccountCount(kod_pr, dat)= 0 CREATE FUNCTION [dbo].[AccountCount] (@kod_pr int, @dat datetime) RETURNS int AS BEGIN declare @count int set @count = (select count(distinct dat) from t where dat<@dat and kod_pr=@kod_pr) return @count END |
6 дек 13, 22:47 [15256192] Ответить | Цитировать Сообщить модератору |
ElenaLeont Member Откуда: Екатеринбург Сообщений: 305 |
получилось вродеUPDATE t SET nal_sz = (select Count(distinct ff.dat) + 1 from t f where f.kod_pr=t.kod_pr and f.dat<t.dat) FROM t |
6 дек 13, 23:07 [15256265] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |