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

Откуда: SPb
Сообщений: 737
в каждом ClientName может быть несколько NumberFolder, а в каждом NumberFolder может быть несколько NumberContainers. Необходимо в выборку добавить количество NumberContainers по каждому ClientName, каждому NumberFolder и итоговое колличество по выборке. если делать это как в выделенной строке, то даёт не корректные данные, хотелось бы скорее так count(distinct(containers.NumberContainers)), но с группированием не срабатывает, в общем у кого есть идеи буду примного благодарен!

select 
	clients.ClientName,
	containers.NumberFolder,
	sum(billdetailsin.Ammount) as TotalAmmountIn
[b][i][u]count(containers.NumberContainers)[/u][/i][/b]
from
	containers

full outer join clients
on containers.ClientID = 
clients.ClientID

full outer join billdetailsin
on containers.ContainerID = 
billdetailsin.ContainerID

WHERE 
  	containers.DateRemoval IS NOT NULL 
AND 
   	containers.DateRemoval
BETWEEN  
   	@StartDate AND @EndDate

group by clients.ClientName, containers.NumberFolder

with rollup

order by clients.ClientName, containers.NumberFolder
25 авг 09, 12:31    [7576610]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
включите в подзапрос group by. а на этот подзапрос rollup

для спящего время бодрствования равносильно сну
25 авг 09, 12:35    [7576627]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
strizzz
хотелось бы скорее так count(distinct(containers.NumberContainers))
Вы хотели сказать
count(distinct containers.NumberContainers)
?
25 авг 09, 12:35    [7576628]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

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

да, но все равно :(

Invalid Query: CUBE and ROLLUP cannot compute distinct aggregates
25 авг 09, 12:37    [7576644]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Алексей2003,

т. е. так group by clients.ClientName, containers.NumberFolder, containers.NumberContainer

?
25 авг 09, 12:38    [7576653]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
самый лучший способ объяснить такие задачи это привести пример данных что есть и что нужно получить... тогда легче будет помогать.
25 авг 09, 12:45    [7576698]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
select ... from (select ... from group by) t rollup ...

для спящего время бодрствования равносильно сну
25 авг 09, 12:47    [7576712]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Ramin,

NULL NULL 20000
клиент1 NULL NULL
клиент1 1 NULL
клиент2 NULL 20000
клиент2 2 20000

хотелось бы еще один столбец с количеством контейнеров по каждой группировке
25 авг 09, 12:49    [7576725]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
strizzz
Ramin,

NULL NULL 20000
клиент1 NULL NULL
клиент1 1 NULL
клиент2 NULL 20000
клиент2 2 20000

хотелось бы еще один столбец с количеством контейнеров по каждой группировке
SQL2005/2008
COUNT(*)OVER(PARTITION BY <КаждаяГруппировка>)
??
25 авг 09, 12:57    [7576768]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
контейнер это какое поле? 1?? и ешё группировать по какому полю?
25 авг 09, 12:58    [7576771]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
SQL2005/2008
COUNT(*)OVER(PARTITION BY <КаждаяГруппировка>)
??
Или, может быть,
SQL2005/2008
SUM(<КоличествоКонтейнеров>)OVER(PARTITION BY <КаждаяГруппировка>)
??
25 авг 09, 12:59    [7576779]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Ramin,

контейнер символьное поле, а группировать хочу clients.ClientName, containers.NumberFolder
25 авг 09, 13:21    [7576889]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

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

хм, не совсем понял что есть <КоличествоКонтейнеров>. count(containers.NumberContainer)?

SUM(<КоличествоКонтейнеров>)OVER(PARTITION BY <КаждаяГруппировка>)
25 авг 09, 13:23    [7576898]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
автор
NULL NULL 20000
клиент1 NULL NULL
клиент1 1 NULL
клиент2 NULL 20000
клиент2 2 20000

select ClientName, NumberFolder, count(...)
from table1
group by ClientName, NumberFolder
25 авг 09, 13:27    [7576917]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Ramin
автор
NULL NULL 20000
клиент1 NULL NULL
клиент1 1 NULL
клиент2 NULL 20000
клиент2 2 20000

select ClientName, NumberFolder, count(...)
from table1
group by ClientName, NumberFolder


дело в том, что там есть еще одна таблица billdetailsin в которой на каждый контейнер может соответствовать несколько строк, и при count(ContainerNumber) их все считает и информация выдаётся неверная
25 авг 09, 13:59    [7577121]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
strizzz
дело в том, что там есть еще одна таблица billdetailsin в которой на каждый контейнер может соответствовать несколько строк, и при count(ContainerNumber) их все считает и информация выдаётся неверная

честное слово ничего не понел ... count(ContainerNumber) не может читать строки из billdetailsin
25 авг 09, 14:18    [7577244]     Ответить | Цитировать Сообщить модератору
 Re: выборка с GROUP BY  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Ramin,

Попробую по чётче сформулировать.

Есть таблица containers:

ContainerID NumberContainer NumberFolder ClientID

Есть таблица billdetailsin:

BillDetailID ContainerID Ammount

Необходимо сделать выборку с группировкой по сумме Ammount по каждому Ammount NumberFolder и по количеству контейнеров в каждом NumberFolder и тоже самое по ClientID

* в таблице billdetailsin может быть несколько позиций на каждый контейнер.
27 авг 09, 10:49    [7585304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить