|
|
|
Проблемы с составлением запроса с ипользованием подзапросов
|
|||
|---|---|---|---|
|
#18+
Я пишу программу торговля в Access 2000 и MS SQL. Я столкнулся с проблемой. У меня есть таблица цен из которой по заданной дате я составляю прайс-лист. CREATE TABLE [Цены на товар] ( [Товар] int, [Дата] smalldate, [Цена] smallmoney, CONSTRAINT pk_Price PRIMARY KEY ([Товар], [Дата]) GO Мне нужно получить прайс-лист товара на указанную дату. Когда я использовал только Accsess, все было просто я использовал два запроса: 1) Запрос [Цены на дату] select [Товар], max([Дата]) where [Дата] < getdate() from [Цены на товар] group by [Товар] 2) Запрос [Прайс-лист] select [Цены на товар]. [Товар], [Цены на товар]. [Цена] where [Цены на товар].[Дата] = [Цены на дату].[Дата] and [Цены на товар]. [Товар] = [Цены на дату]. [Товар] from [Цены на товар], [Цены на дату] и это все работало. В MS SQL я использовал несколько вариантов для получения прайс-листа, но они либо не работают (1), либо работают не совсем правильно (2). 1) function [Цены на дату] (@Дата smalldate) returns table as ( select [Товар], max([Дата]) where [Дата] < getdate() from [Цены на товар] group by [Товар] ) go В этом варианте функция не возвращает таблицу из-за использования агрегатной функции max. 2) select [Цены на товар]. [Товар], [Цены на товар]. [Цена] where [Цены на товар].[Дата] in ( select max([Дата]) where [Дата] < getdate() from [Цены на товар] group by [Товар] ) [Цены на дату].[Дата] in ( select [Товар] where [Дата] < getdate() from [Цены на товар] group by [Товар] ) from [Цены на товар] В этом варианте появляются строк больше чем ожидалось, хотя подзапросы возвращают одинаковое количество строк. Если кто-то может подсказать что я могу сделать в моем случае буду ему очень благодарен. Возможно кто-то предложит другой алгоритм или таблицу для хранения цен о товаре. Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 09:37:09 |
|
||
|
Проблемы с составлением запроса с ипользованием подзапросов
|
|||
|---|---|---|---|
|
#18+
select [Цены на товар].[Товар], [Цены на товар].[Цена] from [Цены на товар], (select [Товар], max([Дата]) as [Дата] from [Цены на товар] where [Дата] < getdate() group by [Товар] ) [Цены на дату] where [Цены на товар].[Товар]=[Цены на дату].[Товар] and [Цены на товар].[Дата] =[Цены на дату].[Дата] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 09:54:10 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32035285&tid=1821988]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
129ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 395ms |

| 0 / 0 |
