Sql - запрос
От: ponuch  
Дата: 11.03.06 08:15
Оценка:
Здравствуйте!
Вопрос может не совсем по теме, но все же...


Существует таблица Cens содержащая поля:
Numrec — ID записи;
RodId — ID родительской записи (связь один ко многим);
ItemId — ID товара;
Cena — цена товара;

Поле RodId может принимать 4 значения (1 — закупочный прайс, 2 — оптовый, 3 — мелкооптовый, 4 — розничный).
Нужно сделать один селект, представляющий таблицу Cens в следующем виде:

ItemId — ID товара
Cena1 — цена закупочная или 0 в случае отсутствия цены на товар в закупочном прайсе
Cena2 — то же для оптовой цены;
Cena3 — то же для мелкооптовой цены;
Cena4 — то же для розничной цены;

В таблице несколько записей

Numrec RodId ItemId Cena
1 1 1 10
2 2 1 20
3 1 2 5

Должно получиться:

ItemId Cena1 Cena2 Cena3 Cena4
1 10 20 0 0
2 5 0 0 0

Пишу такой селект : select ItemId, sum(Cena) as Cena1, sum(Cena) as Cena2,sum(Cena) as Cena3,sum(Cena) as Cena4 from Cens Group by ItemId, но он выдает не совсем то

ItemId Cena1 Cena2 Cena3 Cena4
1 30 30 30 30
2 5 5 5 5

Я понимаю что запрос не верен,но хотелось бы узнать как нужно сгруппировать записи.
Большая просьба писать по делу, заранее спасибо.
Re: Sql - запрос
От: ponuch  
Дата: 11.03.06 08:21
Оценка:
Да... Совсем не туда Надо спать идти...
RE: Sql - запрос
От: Аноним  
Дата: 11.03.06 08:59
Оценка:
Здравствуйте!
Вопрос может не совсем по теме, но все же...


Существует таблица Cens содержащая поля:
Numrec — ID записи;
RodId — ID родительской записи (связь один ко многим);
ItemId — ID товара;
Cena — цена товара;

Поле RodId может принимать 4 значения (1 — закупочный прайс, 2 — оптовый, 3 — мелкооптовый, 4 — розничный).
Нужно сделать один селект, представляющий таблицу Cens в следующем виде:

ItemId — ID товара
Cena1 — цена закупочная или 0 в случае отсутствия цены на товар в закупочном прайсе
Cena2 — то же для оптовой цены;
Cena3 — то же для мелкооптовой цены;
Cena4 — то же для розничной цены;

В таблице несколько записей

Numrec RodId ItemId Cena
1 1 1 10
2 2 1 20
3 1 2 5

Должно получиться:

ItemId Cena1 Cena2 Cena3 Cena4
1 10 20 0 0
2 5 0 0 0

Пишу такой селект : select ItemId, sum(Cena) as Cena1, sum(Cena) as Cena2,sum(Cena) as Cena3,sum(Cena) as Cena4 from Cens Group by ItemId, но он выдает не совсем то

ItemId Cena1 Cena2 Cena3 Cena4
1 30 30 30 30
2 5 5 5 5

Я понимаю что запрос не верен,но хотелось бы узнать как нужно сгруппировать записи.
Большая просьба писать по делу, заранее спасибо.

попробуй :

Select
distinct ItemID,
(Select sum(cena) From table Where ItemID = t.ItemID and RodID =1) as cena1,
(Select sum(cena) From table Where ItemID = t.ItemID and RodID =2) as cena2,
(Select sum(cena) From table Where ItemID = t.ItemID and RodID =3) as cena3,
(Select sum(cena) From table Where ItemID = t.ItemID and RodID =4) as cena4,
From table as t

а вообще есть сайт sql.ru


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Sql - запрос
От: ajalnine  
Дата: 11.03.06 13:05
Оценка:
Здравствуйте, ponuch, Вы писали:

P>Здравствуйте!

P>Вопрос может не совсем по теме, но все же...


P>Существует таблица Cens содержащая поля:

P>Numrec — ID записи;
P>RodId — ID родительской записи (связь один ко многим);
P>ItemId — ID товара;
P>Cena — цена товара;

P>Поле RodId может принимать 4 значения (1 — закупочный прайс, 2 — оптовый, 3 — мелкооптовый, 4 — розничный).

P>Нужно сделать один селект, представляющий таблицу Cens в следующем виде:

P>ItemId — ID товара

P>Cena1 — цена закупочная или 0 в случае отсутствия цены на товар в закупочном прайсе
P>Cena2 — то же для оптовой цены;
P>Cena3 — то же для мелкооптовой цены;
P>Cena4 — то же для розничной цены;

P>В таблице несколько записей


P>Numrec RodId ItemId Cena

P> 1 1 1 10
P> 2 2 1 20
P> 3 1 2 5

P>Должно получиться:


P>ItemId Cena1 Cena2 Cena3 Cena4

P>1 10 20 0 0
P>2 5 0 0 0

P>Пишу такой селект : select ItemId, sum(Cena) as Cena1, sum(Cena) as Cena2,sum(Cena) as Cena3,sum(Cena) as Cena4 from Cens Group by ItemId, но он выдает не совсем то


P>ItemId Cena1 Cena2 Cena3 Cena4

P>1 30 30 30 30
P>2 5 5 5 5

P>Я понимаю что запрос не верен,но хотелось бы узнать как нужно сгруппировать записи.

P>Большая просьба писать по делу, заранее спасибо.


select ItemId,
sum(case RodId when 1 then Cena else 0 end) as Cena1,
sum(case RodId when 2 then Cena else 0 end) as Cena2,
sum(case RodId when 3 then Cena else 0 end) as Cena3,
sum(case RodId when 4 then Cena else 0 end) as Cena4
from Cens
Re[2]: Sql - запрос
От: ajalnine  
Дата: 11.03.06 13:08
Оценка:
Забыл группировку

select ItemId,
sum(case RodId when 1 then Cena else 0 end) as Cena1,
sum(case RodId when 2 then Cena else 0 end) as Cena2,
sum(case RodId when 3 then Cena else 0 end) as Cena3,
sum(case RodId when 4 then Cena else 0 end) as Cena4
from Cens group by ItemId
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.