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

Откуда:
Сообщений: 812
Запрос
select distinct pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa,

(select sum(pf2.summa) from PLAN pf2
where 1=1
and pf.lpu=pf2.lpu
and pf.SKIND=pf2.skind) as summas, pf.o, pf.p_n, pf.p_k
from plan pf
group by pf.l, pf.plan_id, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n,

pf.period_k



Результат

plan lsasrsumsummasummasop_n p_k
61571075123000130008000115301.07.2011 0:0030.09.2011 0:00
63361075123000130008000001.04.2011 0:0030.06.2011 0:00
6913107512NULL1667800066701.10.2011 0:0031.10.2011 0:00
6914107512NULL1667800066701.11.2011 0:0030.11.2011 0:00
6915107512NULL1666800066601.12.2011 0:0031.12.2011 0:00
581910753265000165000590000001.01.2011 0:0031.03.2011 0:00
59461075321850001185000590000001.04.2011 0:0030.06.2011 0:00
61581075321800001180000590000499601.07.2011 0:0030.09.2011 0:00
6916107532NULL1533335900005333301.10.2011 0:0031.10.2011 0:00
6917107532NULL1533335900005333301.11.2011 0:0030.11.2011 0:00
6918107532NULL1533345900005333401.12.2011 0:0031.12.2011 0:00


Как сделать чтобы в результате в столбце summas не выводились повторяющиеся значения?

Сообщение было отредактировано: 7 ноя 11, 15:30
7 ноя 11, 14:25    [11558203]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
aleks2
Guest
НадеждаМ
Как сделать чтобы в результате в столбце summas не выводились повторяющиеся значения?


Повторяющиеся после чего?

А ежели так?

plan l s a srsum summa summas o p_n p_k
6157 10751 2 3000 1 3000 8000 1153 01.07.2011 0:00 30.09.2011 0:00
5819 10753 2 65000 1 65000 590000 0 01.01.2011 0:00 31.03.2011 0:00
6336 10751 2 3000 1 3000 8000 0 01.04.2011 0:00 30.06.2011 0:00
7 ноя 11, 15:05    [11558600]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
aleks2,
вот так
plan l sa srsum summa summas o p_n p_k
6157 10751 23000 1 3000 0 1153 01.07.2011 0:0030.09.2011 0:00
6336 10751 23000 1 3000 0 0 01.04.2011 0:0030.06.2011 0:00
6913 10751 2NULL 1 667 0 667 01.10.2011 0:0031.10.2011 0:00
6914 10751 2NULL 1 667 0 667 01.11.2011 0:0030.11.2011 0:00
6915 10751 2NULL 1 666 8000 666 01.12.2011 0:0031.12.2011 0:00
5819 10753 2650001 65000 0 0 01.01.2011 0:0031.03.2011 0:00
5946 10753 21850001 185000 0 001.04.2011 0:0030.06.2011 0:00
6158 10753 21800001 180000 0 499601.07.2011 0:0030.09.2011 0:00
6916 10753 2NULL 1 53333 0 53333 01.10.2011 0:0031.10.2011 0:00
6917 10753 2NULL 1 53333 0 53333 01.11.2011 0:0030.11.2011 0:00
6918 10753 2NULL 1 53334 590000 53334 01.12.2011 0:0031.12.2011 0:00


Сообщение было отредактировано: 7 ноя 11, 15:32
7 ноя 11, 15:15    [11558674]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Dima T
Member

Откуда:
Сообщений: 15865
НадеждаМ, оформляйте правильно сообщения, ломать глаза об гору цифр никто не захочет :)
для оформления таблиц есть тэги FIXED и CSV.
Сейчас так:
НадеждаМ
plan	 	l	s	a	srsum	summa	summas	o	p_n	               p_k
6157 10751 2 3000 1 3000 8000 1153 01.07.2011 0:00 30.09.2011 0:00
6336 10751 2 3000 1 3000 8000 0 01.04.2011 0:00 30.06.2011 0:00
6913 10751 2 NULL 1 667 8000 667 01.10.2011 0:00 31.10.2011 0:00
6914 10751 2 NULL 1 667 8000 667 01.11.2011 0:00 30.11.2011 0:00
6915 10751 2 NULL 1 666 8000 666 01.12.2011 0:00 31.12.2011 0:00
5819 10753 2 65000 1 65000 590000 0 01.01.2011 0:00 31.03.2011 0:00
5946 10753 2 185000 1 185000 590000 0 01.04.2011 0:00 30.06.2011 0:00
6158 10753 2 180000 1 180000 590000 4996 01.07.2011 0:00 30.09.2011 0:00
6916 10753 2 NULL 1 53333 590000 53333 01.10.2011 0:00 31.10.2011 0:00
6917 10753 2 NULL 1 53333 590000 53333 01.11.2011 0:00 30.11.2011 0:00
6918 10753 2 NULL 1 53334 590000 53334 01.12.2011 0:00 31.12.2011 0:00

Надо
НадеждаМ
aleks2,
вот так
plan 	l 	s a 	srsum 	summa 	summas 	o 	p_n 		 p_k
6157 10751 2 3000 1 3000 0 1153 01.07.2011 0:00 30.09.2011 0:00
6336 10751 2 3000 1 3000 0 0 01.04.2011 0:00 30.06.2011 0:00
6913 10751 2 NULL 1 667 0 667 01.10.2011 0:00 31.10.2011 0:00
6914 10751 2 NULL 1 667 0 667 01.11.2011 0:00 30.11.2011 0:00
6915 10751 2 NULL 1 666 8000 666 01.12.2011 0:00 31.12.2011 0:00
5819 10753 2 65000 1 65000 0 0 01.01.2011 0:00 31.03.2011 0:00
5946 10753 2 185000 1 185000 0 0 01.04.2011 0:00 30.06.2011 0:00
6158 10753 2 180000 1 180000 0 4996 01.07.2011 0:00 30.09.2011 0:00
6916 10753 2 NULL 1 53333 0 53333 01.10.2011 0:00 31.10.2011 0:00
6917 10753 2 NULL 1 53333 0 53333 01.11.2011 0:00 30.11.2011 0:00
6918 10753 2 NULL 1 53334 590000 53334 01.12.2011 0:00 31.12.2011 0:00

Я правильно понимаю что красные надо заменить на ноли?

Если так, то это лучше сделать на клиенте, подсчетом итога при каждом изменении поля L. Не надо грузить сервер несвойственными ему задачами.
7 ноя 11, 15:30    [11558782]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Dima T,

Да надо красным выделенные цифры нулями заменились. Результат надо вывеси в грид на форме.
7 ноя 11, 15:32    [11558803]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Я правильно понимаю что красные надо заменить на ноли?

Если так, то это лучше сделать на клиенте, подсчетом итога при каждом изменении поля L. Не надо грузить сервер несвойственными ему задачами.


Что-то не совсем понимаю как это сделать
7 ноя 11, 15:46    [11558919]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Т.к order by в исходном запросе отсутствует, то применяем телепатию:
with x as
(
 select distinct
  pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa,
  (select sum(pf2.summa) from PLAN pf2 where 1=1 and pf.lpu=pf2.lpu and pf.SKIND=pf2.skind) as summas,
  pf.o, pf.p_n, pf.p_k
 from
  plan pf
 group by
  pf.l, pf.plan_id, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, pf.period_k
)
select
 x.plan_id, x.l, x.s, x.a, x.srsum, x.summa,
 case when row_number() over (partition by x.l order by x.plan_id) = count(*) over (partition by x.l) then x.summas else 0 end as summas
 x.o, x.p_n, x.p_k
from
 x
order by
 x.l, x.plan_id;
7 ноя 11, 15:51    [11558959]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

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

Спасибо, попробую разобраться. Что-то совсем не соображается, голова жутко трещит.
7 ноя 11, 16:02    [11559042]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Dima T
Member

Откуда:
Сообщений: 15865
НадеждаМ
Я правильно понимаю что красные надо заменить на ноли?

Если так, то это лучше сделать на клиенте, подсчетом итога при каждом изменении поля L. Не надо грузить сервер несвойственными ему задачами.


Что-то не совсем понимаю как это сделать

Если на VFP то так
&& получаем результат в курсор tRes
sele tRes
lnL = tRes.L
lnSum = 0
scan
    if lnL != tRes.L
       skip -1 in tRes
       repl in tRes summas with lnSum
       skip in tRes
       lnSum = 0
    endif
    lnSum = lnSum + tRes.summa
    repl in tRes summas with 0 && поле summas можно изначально нулями заполнить, тогда эта строка лишняя
endscan
repl in tRes summas with lnSum
go top in tRes
можно вообще в другой курсор перегнать вставляя итог в поле summa, тогда в гриде это красиво будет выглядеть. Примерно так
plan lsasrsumsummaop_n p_k
6157107512300013000115301.07.2011 0:0030.09.2011 0:00
6336107512300013000001.04.2011 0:0030.06.2011 0:00
6913107512NULL166766701.10.2011 0:0031.10.2011 0:00
6914107512NULL166766701.11.2011 0:0030.11.2011 0:00
6915107512NULL166666601.12.2011 0:0031.12.2011 0:00
8000
581910753265000165000001.01.2011 0:0031.03.2011 0:00
59461075321850001185000001.04.2011 0:0030.06.2011 0:00
61581075321800001180000499601.07.2011 0:0030.09.2011 0:00
6916107532NULL1533335333301.10.2011 0:0031.10.2011 0:00
6917107532NULL1533335333301.11.2011 0:0030.11.2011 0:00
6918107532NULL1533345333401.12.2011 0:0031.12.2011 0:00
590000
7 ноя 11, 16:05    [11559062]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Dima T,

Да вот так наверно лучше будет.
7 ноя 11, 16:13    [11559129]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
MAYAKOV_SV
Member [заблокирован]

Откуда:
Сообщений: 1913
Как вариант (не проверял):
 select distinct  pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa,
		
		null as summas, pf.o, pf.p_n, pf.p_k
		from plan pf
		group by  pf.l, pf.plan_id, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, 

pf.period_k
union
select null, l, null,null,null,null, sum(pf2.summa), null,null,null from PLAN pf2
			group by pf2.l
group by pf2.skind
order by 2, 7
7 ноя 11, 16:46    [11559358]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
MAYAKOV_SV
Member [заблокирован]

Откуда:
Сообщений: 1913
Исправлено:
 select distinct  pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, pf.p_k, 1 as blk
		from plan pf
		group by  pf.l, pf.plan_id, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, 

pf.period_k
union
select null, l, null,null,null, sum(pf2.summa), null,null,null, 2 from PLAN pf2
			group by pf2.l
group by pf2.skind
order by 2, 10
[/quot]
7 ноя 11, 16:49    [11559377]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
можно вообще в другой курсор перегнать вставляя итог в поле summa, тогда в гриде это красиво будет выглядеть. Примерно так


Доброе утро. Я пока плохо себе представляю как сделать данный вариант. Понимаю что нужно


select * from tRes into cursor my_cursor
SET CARRY ON

INSERT before blank

использовать, но в каком месте их приткнуть ...
8 ноя 11, 10:44    [11561979]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
MAYAKOV_SV
Member [заблокирован]

Откуда:
Сообщений: 1913
НадеждаМ
Доброе утро. Я пока плохо себе представляю как сделать данный вариант.

Надежда, я пытался написать тот же вариант, который предложил Dima T, только одним SQL запросом.
Алгоритм такой - создаем набор записей с полем признаком = 1, добавляем к ним при помощи union <l> + <сумма по [l]> с полем признаком = 2.
Далее сортируем, например по [l], а затем по полю признаку, для того чтобы суммы легли внизу групп. В моем коде есть одна ошибка - не убрал я предпоследнюю строку [group by pf2.skind].
Как-то так.
8 ноя 11, 11:15    [11562190]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

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


Я попробовала предложенный вами вариант, спасибо все работает. Хотела попробоавть средствами Fox сделать то же самое.
8 ноя 11, 11:35    [11562370]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
MAYAKOV_SV
Member [заблокирован]

Откуда:
Сообщений: 1913
НадеждаМ
Хотела попробоавть средствами Fox сделать то же самое.

Fox'овыми вроде как понятнее, но медленнее.
Я обычно стараюсь одним запросом обойтись в таких случаях, а если не получается - делаю "фоксовыми средствами".
8 ноя 11, 11:40    [11562421]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Вот так в запросе в поле summa считается сумма по столбцам l и s

select distinct pf.plan_id, pf.l, pf.s, pf.a, pf.s,CONVERT(varchar(20), pf.summa) as summa, pf.o, pf.p_n, pf.p_k, 1 as blk
from plan pf
group by pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, pf.p_k
union
select null, l, s, null,null, 'сумма - '+convert(varchar(20),sum(pf2.summa)), pf2.o, null, null, 2 from PLAN pf2
group by pf2.l, pf2.s

order by 2,3,10
end

[CSV= ]
plan_id l s a srsum summa o p_n p_k blk
3283 102 1 1 3826,57 2000.00 0,00 2008-10-01 00:00:00 2008-12-31 00:00:00 1
4156 102 1 1 5000,00 5000.00 0,00 2009-10-01 00:00:00 2009-12-31 00:00:00 1
4364 102 1 1 600,00 600.00 0,00 2010-01-01 00:00:00 2010-03-31 00:00:00 1
4718 102 1 0 600,00 0.00 0,00 2010-04-01 00:00:00 2010-06-30 00:00:00 1
4982 102 1 2 600,00 1000.00 0,00 2010-07-01 00:00:00 2010-09-30 00:00:00 1
5313 102 1 0 1600,00 0.00 0,00 2010-10-01 00:00:00 2010-12-31 00:00:00 1
NULL 102 1 NULL NULL 8600.00 0,00 NULL NULL 2
[CSV]

Надо сделать подсчет еще и по столбцу p_n чтобы
[CSV= ]
plan_id l s a srsum summa o p_n p_k blk
3283 102 1 1 3826,57 2000.00 0,00 2008-10-01 00:00:00 2008-12-31 00:00:00 1
NULL 102 1 NULL NULL 2000.00 0,00 NULL NULL
4156 102 1 1 5000,00 5000.00 0,00 2009-10-01 00:00:00 2009-12-31 00:00:00 1
null 102 1 null null 5000.00 0,00 null null

4364 102 1 1 600,00 600.00 0,00 2010-01-01 00:00:00 2010-03-31 00:00:00 1
4718 102 1 0 600,00 0.00 0,00 2010-04-01 00:00:00 2010-06-30 00:00:00 1
4982 102 1 2 600,00 1000.00 0,00 2010-07-01 00:00:00 2010-09-30 00:00:00 1
5313 102 1 0 1600,00 0.00 0,00 2010-10-01 00:00:00 2010-12-31 00:00:00 1
NULL 102 1 NULL NULL 1600.00 0,00 NULL NULL 2
[CSV]

Делаю в
select null, l, s, null,null, 'сумма - '+convert(varchar(20),sum(pf2.summa)), pf2.o, pf2.p_n, null, 2 from PLAN pf2
group by pf2.l, pf2.s, pf2.p_n

order by 2,3,8,10

Но поулчаю не то что надо.
8 ноя 11, 15:40    [11564425]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Черт

Вот так в запросе в поле summa считается сумма по столбцам l и s

select distinct pf.plan_id, pf.l, pf.s, pf.a, pf.s,CONVERT(varchar(20), pf.summa) as summa, pf.o, pf.p_n, pf.p_k, 1 as blk
from plan pf
group by pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, pf.p_k
union
select null, l, s, null,null, 'сумма - '+convert(varchar(20),sum(pf2.summa)), pf2.o, null, null, 2 from PLAN pf2
group by pf2.l, pf2.s

order by 2,3,10
end

plan_id l s a srsum summa o p_n p_k blk
3283 102 1 1 382657 2000.00 000 2008-10-01 00:00:00 2008-12-31 00:00:00 1
4156 102 1 1 500000 5000.00 000 2009-10-01 00:00:00 2009-12-31 00:00:00 1
4364 102 1 1 60000 600.00 000 2010-01-01 00:00:00 2010-03-31 00:00:00 1
4718 102 1 0 60000 0.00 000 2010-04-01 00:00:00 2010-06-30 00:00:00 1
4982 102 1 2 60000 1000.00 000 2010-07-01 00:00:00 2010-09-30 00:00:00 1
5313 102 1 0 160000 0.00 000 2010-10-01 00:00:00 2010-12-31 00:00:00 1
NULL 102 1 NULL NULL 8600.00 000 NULL NULL 2


Надо сделать подсчет еще и по столбцу p_n чтобы
plan_id l s a srsum summa o p_n p_k blk
3283 102 1 1 382657 2000.00 000 2008-10-01 00:00:00 2008-12-31 00:00:00 1
NULL 102 1 NULL NULL 2000.00 000 NULL NULL
4156 102 1 1 500000 5000.00 000 2009-10-01 00:00:00 2009-12-31 00:00:00 1
null 102 1 null null 5000.00 000 null null
4364 102 1 1 60000 600.00 000 2010-01-01 00:00:00 2010-03-31 00:00:00 1
4718 102 1 0 60000 0.00 000 2010-04-01 00:00:00 2010-06-30 00:00:00 1
4982 102 1 2 60000 1000.00 000 2010-07-01 00:00:00 2010-09-30 00:00:00 1
5313 102 1 0 160000 0.00 000 2010-10-01 00:00:00 2010-12-31 00:00:00 1
NULL 102 1 NULL NULL 1600.00 000 NULL NULL 2


Делаю в
select null, l, s, null,null, 'сумма - '+convert(varchar(20),sum(pf2.summa)), pf2.o, pf2.p_n, null, 2 from PLAN pf2
group by pf2.l, pf2.s, pf2.p_n

order by 2,3,8,10

Но поулчаю не то что надо.
8 ноя 11, 15:41    [11564436]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

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

Я попробовала предложенный вами вариант, спасибо все работает. Хотела попробоавть средствами Fox сделать то же самое.
8 ноя 11, 15:52    [11564527]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
че-то у меня форматирование сбилось.
8 ноя 11, 15:53    [11564537]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Glory
Member

Откуда:
Сообщений: 104751
НадеждаМ
че-то у меня форматирование сбилось.

Для проверки существует Предварительный просмотр сообщения
8 ноя 11, 15:54    [11564551]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Черт

Вот так в запросе в поле summa считается сумма по столбцам l и s

select distinct pf.plan_id, pf.l, pf.s, pf.a, pf.s,CONVERT(varchar(20), pf.summa) as summa, pf.o, pf.p_n, pf.p_k, 1 as blk
from plan pf
group by pf.plan_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa, pf.o, pf.p_n, pf.p_k
union
select null, l, s, null,null, 'сумма - '+convert(varchar(20),sum(pf2.summa)), pf2.o, null, null, 2 from PLAN pf2
group by pf2.l, pf2.s

order by 2,3,10
end


plan_id l s a srsum summa o p_n p_k blk
3283 102 1 1 3826.57 2000.00 0.00 2008-10-01 00:00:00 2008-12-31 00:00:00 1
4156 102 1 1 5000.00 5000.00 0.00 2009-10-01 00:00:00 2009-12-31 00:00:00 1
4364 102 1 1 600.00 600.00 0.00 2010-01-01 00:00:00 2010-03-31 00:00:00 1
4718 102 1 0 600.00 0.00 0.00 2010-04-01 00:00:00 2010-06-30 00:00:00 1
4982 102 1 2 600.00 1000.00 0.00 2010-07-01 00:00:00 2010-09-30 00:00:00 1
5313 102 1 0 1600.00 0.00 0.00 2010-10-01 00:00:00 2010-12-31 00:00:00 1
NULL 102 1 NULL NULL 8600.00 0.00 NULL NULL 2



Надо сделать подсчет еще и по столбцу p_n чтобы

plan_id l s a srsum summa o p_n p_k blk
3283 102 1 1 3826.57 2000.00 0.00 2008-10-01 00:00:00 2008-12-31 00:00:00 1
NULL 102 1 NULL NULL 2000.00 0.00 NULL NULL
4156 102 1 1 5000.00 5000.00 0.00 2009-10-01 00:00:00 2009-12-31 00:00:00 1
null 102 1 null null 5000.00 0.00 null null
4364 102 1 1 600.00 600.00 0.00 2010-01-01 00:00:00 2010-03-31 00:00:00 1
4718 102 1 0 600.00 0.00 0.00 2010-04-01 00:00:00 2010-06-30 00:00:00 1
4982 102 1 2 600.00 1000.00 0.00 2010-07-01 00:00:00 2010-09-30 00:00:00 1
5313 102 1 0 1600.00 0.00 0.00 2010-10-01 00:00:00 2010-12-31 00:00:00 1
NULL 102 1 NULL NULL 1600.00 0.00 NULL NULL 2


Делаю в
select null, l, s, null,null, 'сумма - '+convert(varchar(20),sum(pf2.summa)), pf2.o, pf2.p_n, null, 2 from PLAN pf2
group by pf2.l, pf2.s, pf2.p_n

order by 2,3,8,10

Но поулчаю не то что надо.
8 ноя 11, 16:19    [11564792]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Dima T
Member

Откуда:
Сообщений: 15865
MAYAKOV_SV
НадеждаМ
Хотела попробоавть средствами Fox сделать то же самое.

Fox'овыми вроде как понятнее, но медленнее.
Я обычно стараюсь одним запросом обойтись в таких случаях, а если не получается - делаю "фоксовыми средствами".

Насчет "медленнее" можно поспорить, если у тебя мощный сервер то на клиенте будет медленнее, если сервер ничем не загружен. Если сервер загружен, то будет на нем медленнее, и не только этому клиенту, но и всем остальным.
Не надо грузить сервер тем что можно на клиенте сделать. Сервер один, а клиентов много.

НадеждаМ
можно вообще в другой курсор перегнать вставляя итог в поле summa, тогда в гриде это красиво будет выглядеть. Примерно так


Доброе утро. Я пока плохо себе представляю как сделать данный вариант. Понимаю что нужно

select * from tRes into cursor my_cursor
SET CARRY ON

INSERT before blank

использовать, но в каком месте их приткнуть ...

Проще создать второй курсор с такой же структурой и туда копировать из первого по одной записи вставляя записи с итогами.
8 ноя 11, 16:51    [11565077]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
С запросом все получилось, спасибо.
9 ноя 11, 08:22    [11567237]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Пробую средствами фокс

CREATE CURSOR plan;
(l int, s int, srsum int, summa int, o int, p_n datetime, p_k datetime)

IF USED('tRes')
SELECT tRes
lnL = tRes.L

FOR i=1 TO RECCOUNT()

IF lnL=tRes.l
INSERT INTO plan VALUES (tres.l, tres.s, tres.srum, tres.summa, tres.o, tres.p_n, tres.p_k )
ELSE

INSERT INTO plan VALUES (0,0,0,0,0,CTOD(''), CTOD(''))
lnL=tRes.l

ENDIF
GOTO i

ENDFOR
ENDIF

this.Parent.grid1.RecordSource=''
IF USED('plan')
SELECT plan
this.Parent.grid1.RecordSource='plan'

ENDIF

Строка заполненная нулями добавляется, как туда сумму воткнуть в values? sum tres.summa?
9 ноя 11, 13:40    [11569250]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить