помогите написать такой select!

konst
Дата: 15.09.2005 11:42:25
к одной таблице. в ней есть поле, скажем, "класс обслуживания", которого может быть 3 вида, также есть поле номер заказа, например:

| ref | class | orderid |
, где class может быть 1, 2 или 3; ref -- не ключ!
возможно ли получить как-нибудь таблицу вида:

| ref | orderid1 | orderid2 | orderid3 |
для одного значенияч ref orderid1 -- для класса обслуживания 1, orderid2 и orderid3 -- для классов обслуживания 2 и 3, например:

| ref | class | orderid |
11 1 A01
11 3 A02
12 1 A03
12 3 A04
12 2 A05
13 3 A06
13 2 A07
после запроса получаем:

| ref | orderid1 | orderid2 | orderid3 |
11 A01 A02
12 A03 A05 A04
13 A07 A06
возможно вообще такой запрос для access написать?
Юрий Никифоров
Дата: 15.09.2005 12:03:50
TRANSFORM Min(Table1.OrderId) AS MinOfOrderId
SELECT Table1.Ref
FROM Table1
GROUP BY Table1.Ref
PIVOT Table1.Class
konst
Дата: 15.09.2005 12:13:15
Юрий Никифоров
TRANSFORM Min(Table1.OrderId) AS MinOfOrderId
SELECT Table1.Ref
FROM Table1
GROUP BY Table1.Ref
PIVOT Table1.Class

ух ты, здорово! только нулей не добавляет :\
Юрий Никифоров
Дата: 15.09.2005 12:15:16
Пардон, каких нулей?
konst
Дата: 15.09.2005 12:23:49
Юрий Никифоров
Пардон, каких нулей?

Если класса обслуживаения не окажется одного совсем в таблице...
konst
Дата: 15.09.2005 12:31:17
Юрий!
Можно ещё два вопроса:
1. можно ли задавать определённые значения классов для вывода?
2. где бы справочник в инете по sql в ms access посмотреть? (пока сейчас сам поищу, конечно)
Юрий Никифоров
Дата: 15.09.2005 12:42:13
konst
Юрий Никифоров
Пардон, каких нулей?

Если класса обслуживаения не окажется одного совсем в таблице...


Так а как тогда запрос узнает, что он в природе существует?
Это надо делать еще табличку с перечислением существующих классов.
konst
Дата: 15.09.2005 12:53:54
Юрий Никифоров
konst
Юрий Никифоров
Пардон, каких нулей?

Если класса обслуживаения не окажется одного совсем в таблице...


Так а как тогда запрос узнает, что он в природе существует?
Это надо делать еще табличку с перечислением существующих классов.

А руками можно вписать, т.к. их именно 3 предполагается, ни больше ни меньше.
Юрий Никифоров
Дата: 15.09.2005 12:57:29
konst
Юрий!
Можно ещё два вопроса:
1. можно ли задавать определённые значения классов для вывода?
2. где бы справочник в инете по sql в ms access посмотреть? (пока сейчас сам поищу, конечно)



1. в условие столбца класс добавить "1" Or "3" (любые конечно можно)

TRANSFORM Min(Table1.OrderId) AS MinOfOrderId
SELECT Table1.Ref
FROM Table1
WHERE Table1.Class="1" Or Table1.Class="3"
GROUP BY Table1.Ref
PIVOT Table1.Class

2. Лучший справочник это форум :-).

http://84.252.140.76/0706/access2003.rar (90 метров в PDF)
http://hiprog.com/access/
Юрий Никифоров
Дата: 15.09.2005 15:17:08
konst

А руками можно вписать, т.к. их именно 3 предполагается, ни больше ни меньше.


Самое простое cделать Table2 с полем Class и вбить туда 1,2,3, и такой запросик.

TRANSFORM Min(Table1.OrderId) AS MinOfOrderId
SELECT Table1.Ref
FROM Table1 RIGHT JOIN Table2 ON Table1.Class = Table2.Class
GROUP BY Table1.Ref
PIVOT Table2.Class;