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

Откуда:
Сообщений: 38
Есть две таблицы

-- creating table
create table #test (
  id         int,
  group_name varchar(30),
  group_code int)

-- inserting test data
insert #test values(1, 'test1', 10)
insert #test values(2, 'test1', 20)
insert #test values(3, 'test1', 20)
insert #test values(4, 'test1', 10)
insert #test values(5, 'test2', 10)
insert #test values(6, 'test2', 20)
insert #test values(7, 'test2', 15)

select * from #test
и
-- creating table
create table #test0 (
  id         int,
  group_name varchar(30),
  group_code int)

-- inserting test data
insert #test values(1, 'test1', 50)
insert #test values(2, 'test2', 35)

select * from #test0

Надо запрос групирурующий обе таблицы по второму полю и выдавший только те строки из первой таблице, на которые хватиты "суммы" во второй колонке.
То есть должен быть такой результат

1 test1 10
2 test1 20
3 test1 20
5 test2 10
6 test2 20


Заранее благодарен
25 июн 09, 16:46    [7344173]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Valentine
должен быть такой результат
1 test1 10
2 test1 20
3 test1 20
5 test2 10
6 test2 20
А почему не такой:
1    test1     10
2    test1     20
3    test1     20
7    test2     15
6    test2     20
?
25 июн 09, 16:51    [7344229]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Valentine
Member

Откуда:
Сообщений: 38
Паганель,

нет... именно последовательно
То есть закрываем полностью
6 test2 20

а когда остаеться 5 и не хватает на 7- останавливаемься
25 июн 09, 16:53    [7344248]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
select t.id, t.group_name, t.group_code, sum(t1.group_code) as summ, t0.group_code
  from #test  as t
  join #test  as t1 on t1.group_name = t.group_name
                   and t1.id <= t.id
  join #test0 as t0 on t0.group_name = t.group_name
 group by t.id, t.group_name, t.group_code, t0.group_code
having sum(t1.group_code) <= t0.group_code

id          group_name                     group_code  summ        group_code
----------- ------------------------------ ----------- ----------- -----------
1           test1                          10          10          50
2           test1                          20          30          50
3           test1                          20          50          50
5           test2                          10          10          35
6           test2                          20          30          35

(5 row(s) affected)
25 июн 09, 17:08    [7344392]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
CroCIV
Member

Откуда:
Сообщений: 7
зачет
25 июн 09, 17:13    [7344437]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Valentine
Member

Откуда:
Сообщений: 38
Паганель,

Супер!!
Огромное спасибо!
25 июн 09, 17:30    [7344579]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Valentine
Member

Откуда:
Сообщений: 38
Хм... всё красиво, по при применении в 1С ,чёт сортировка не правильная. ((
1С 8.1 УПП для Украины
ВЫБРАТЬ
	ВложенныйЗапрос.Субконто2,
	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Субконто2),
	ВложенныйЗапрос.СуммаОборотКт,
	ХозрасчетныйОбороты.Счет,
	ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Счет),
	ХозрасчетныйОбороты.Субконто1,
	ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Субконто1),
	ХозрасчетныйОбороты.Субконто2 КАК Субконто21,
	ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Субконто2) КАК Субконто2Представление1,
	ХозрасчетныйОбороты.Регистратор КАК Регистратор,
	ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Регистратор),
	ХозрасчетныйОбороты.СуммаОборотДт,
	ХозрасчетныйОбороты1.Регистратор КАК Регистратор1,
	ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты1.Регистратор) КАК РегистраторПредставление1,
	ХозрасчетныйОбороты.Период КАК Период
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Обороты(, , регистратор, , , , , ) КАК ХозрасчетныйОбороты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ХозрасчетныйОбороты.Субконто2 КАК Субконто2,
			ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Субконто2) КАК Субконто2Представление,
			СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт
		ИЗ
			РегистрБухгалтерии.Хозрасчетный.Обороты(, &Дат, , , , , , ) КАК ХозрасчетныйОбороты
		ГДЕ
			ХозрасчетныйОбороты.Счет = &счет
		
		СГРУППИРОВАТЬ ПО
			ХозрасчетныйОбороты.Субконто2) КАК ВложенныйЗапрос
		ПО ХозрасчетныйОбороты.Субконто2 = ВложенныйЗапрос.Субконто2
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(, , регистратор, , , , , ) КАК ХозрасчетныйОбороты1
		ПО ХозрасчетныйОбороты.Субконто2 = ХозрасчетныйОбороты1.Субконто2
			И ХозрасчетныйОбороты.Регистратор <= ХозрасчетныйОбороты1.Регистратор

СГРУППИРОВАТЬ ПО
	ХозрасчетныйОбороты.Регистратор,
	ХозрасчетныйОбороты.Субконто1,
	ХозрасчетныйОбороты.Субконто2,
	ВложенныйЗапрос.СуммаОборотКт,
	ВложенныйЗапрос.Субконто2,
	ХозрасчетныйОбороты.Счет,
	ХозрасчетныйОбороты.СуммаОборотДт,
	ХозрасчетныйОбороты1.Регистратор,
	ХозрасчетныйОбороты.Период

ИМЕЮЩИЕ
	СУММА(ХозрасчетныйОбороты1.СуммаОборотДт) <= ВложенныйЗапрос.СуммаОборотКт

УПОРЯДОЧИТЬ ПО
	Период
АВТОУПОРЯДОЧИВАНИЕ

Помогите кто может. Спасибо
30 июн 09, 18:09    [7360624]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36822
Вопросы по 1с надо задавать на форуме по 1с.
30 июн 09, 18:13    [7360637]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
УПОРЯДОЧИТЬ ПО
	Период
АВТОУПОРЯДОЧИВАНИЕ

вот ето лишнее
-------------------------------------
Jedem Das Seine
30 июн 09, 18:30    [7360699]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить