Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
select top(2) v1.[Обозначение] as [Валюта],v1.[Курс_к_руб] as [Курс к руб. (ЦБ РФ)], round(v1.[Курс_к_руб]-v2.[Курс_к_руб],4) as [Изм.,+/-],(select top(1) case when v1.[Обозначение] <> 'USD' then round(v1.[Курс_к_руб]/v2.[Курс_к_руб],4)
end
from [Валюта] v1,[Валюта] v2
where v1.[Обозначение]<>v2.[Обозначение] and v1.[Дата]=v2.[Дата]
order by v1.[Дата] desc,v2.[Дата] desc)as [Курс к USD]
from [Валюта] v1,[Валюта] v2
where v1.[Обозначение]=v2.[Обозначение] and v1.[Дата]<>v2.[Дата]
order by v1.[Дата] desc,v2.[Дата] desc

В результате получаем:

Валюта Курс к руб. (ЦБ РФ) Изм.,+/- Курс к USD
USD 31,5041 -0,5091 1,2415
EUR 39,1136 -0,0049 1,2415

А нужно получить таблицу:

Валюта Курс к руб. (ЦБ РФ) Изм.,+/- Курс к USD
USD 31,5041 -0,5091
EUR 39,1136 -0,0049 1,2415

таблица валюта содержит поля (Дата,Обозначение,Курс_к_руб)
13 авг 12, 11:43    [13002936]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
За что вы так не навидите тег src ?

select top(2) 
   v1.[Обозначение] as [Валюта],
   v1.[Курс_к_руб] as [Курс к руб. (ЦБ РФ)], 
   round(v1.[Курс_к_руб]-v2.[Курс_к_руб],4) as [Изм.,+/-],
   (
      select top(1) 
         case 
            when v1.[Обозначение] <> 'USD' 
            then round(v1.[Курс_к_руб]/v2.[Курс_к_руб],4) 
         end
      from 
         [Валюта] v1, [Валюта] v2
      where 
         v1.[Обозначение] <> v2.[Обозначение] and v1.[Дата]=v2.[Дата]
      order by 
         v1.[Дата] desc, v2.[Дата] desc
   ) as [Курс к USD]
from 
   [Валюта] v1, [Валюта] v2
where 
   v1.[Обозначение] = v2.[Обозначение] and v1.[Дата] <> v2.[Дата]
order by 
   v1.[Дата] desc, v2.[Дата] desc


SELECT 
   asof.dtAsOf,            -- Текущая дата
   asof.dtPrev,            -- Предыдущая дата
   rate.sCurrencyCode,     -- Валюта
   rate.dbCurrencyRate,    -- Курс к рублю
   -- Курс к доллару
   dbCurrencyRate_USD = rate.dbCurrencyRate / usd.dbCurrencyRate,
   -- Предыдущий курс к рублю
   dbCurrencyRate_Prev = rate_Prev.dbCurrencyRate,
   -- Изменение курса к рублю
   delta = rate_Prev.dbCurrencyRate - rate.dbCurrencyRate
FROM
(   
   SELECT 
      dtAsOf = (SELECT MAX(dtAsOf)),
      dtPrev = (SELECT MAX(dtAsOf) FROM _qrCurrencyRate WHERE dtAsOf < (SELECT dtAsOf = MAX(dtAsOf) FROM _qrCurrencyRate)) 
   FROM 
      _qrCurrencyRate 
) asof     
INNER JOIN _qrCurrencyRate rate ON rate.dtAsOf = asof.dtAsOf
INNER JOIN _qrCurrencyRate usd ON usd.dtAsOf = asof.dtAsOf AND usd.sCurrencyCode='USD'
INNER JOIN _qrCurrencyRate rate_prev ON rate_prev.dtAsOf = asof.dtPrev AND rate_prev.sCurrencyCode = rate.sCurrencyCode


dtAsOfdtPrevsCurrencyCodedbCurrencyRatedbCurrencyRate_USDdbCurrencyRate_Prevdelta
2012-08-09 00:00:002012-08-08 00:00:00EUR39.2299001.237899446840871296639.232200 0.002300
2012-08-09 00:00:002012-08-08 00:00:00RUR1.0000000.03155499878513254671.0000000.000000
2012-08-09 00:00:002012-08-08 00:00:00UAH3.9112200.12341854234838611953.905810-0.005410
2012-08-09 00:00:002012-08-08 00:00:00USD31.6907001.000000000000000000031.664400-0.026300
13 авг 12, 12:17    [13003125]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
Программист-Любитель,

спасибо, помогло очень.
Не подскажете как 1 затереть на пустое поле?
14 авг 12, 13:50    [13008828]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
qwerty112
Guest
ola_ya_22
Программист-Любитель,

спасибо, помогло очень.
Не подскажете как 1 затереть на пустое поле?

case when xz=1 then 0 else xz end
14 авг 12, 14:07    [13008974]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
qwerty112
Guest
qwerty112
ola_ya_22
Программист-Любитель,

спасибо, помогло очень.
Не подскажете как 1 затереть на пустое поле?

case when xz=1 then null else xz end
14 авг 12, 14:08    [13008980]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
Код прилагается
Guest
qwerty112,

nullif - не в сиквеле разве?
14 авг 12, 14:14    [13009042]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
qwerty112
Guest
Код прилагается
qwerty112,

nullif - не в сиквеле разве?

аа, ну да - тоже вариант
select ..., nullif (xz, 1) as xz ...
14 авг 12, 14:18    [13009087]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
qwerty112,
так он и пишет null,а мне надо чтобы просто пустое поле.
14 авг 12, 14:22    [13009135]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
ola_ya_22
qwerty112,
так он и пишет null,а мне надо чтобы просто пустое поле.
"Пусто поле" - это что еще такое?
14 авг 12, 14:23    [13009141]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
Гавриленко Сергей Алексеевич, это в будущем будет табличка в excel, которую видит пользователь
и она должна иметь вид
Валюта Курс к руб. (ЦБ РФ) Изм., +/- Курс к USD Изм., +/-
EUR 39,1136 -0,0049 1,2415 0,0196
USD 31,5041 -0,5091

а получается

Валюта Курс к руб. (ЦБ РФ) Изм., +/- Курс к USD Изм., +/-
EUR 39,1136 -0,0049 1,2415 0,0196
USD 31,5041 -0,5091 null null
14 авг 12, 14:40    [13009302]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
create view [Цена_Валюта]
as select [Валюта]=[v1].[Обозначение],[Курс к руб. (ЦБ РФ)]=[v1].[Курс_к_руб],[Изм., +/-]=round(v1.[Курс_к_руб]-v3.[Курс_к_руб],4),[Курс к USD]=round(v1.[Курс_к_руб]/v2.[Курс_к_руб],4),[Изм.,+/-]=round(v1.[Курс_к_руб]/v2.[Курс_к_руб]-v3.[Курс_к_руб]/v4.[Курс_к_руб],4)
from
(select
[Дата_текущ]= (select MAX([Дата])),
[Дата_пред]=(select MAX([Дата]) from [Валюта] where [Дата]<(select [Дата]=max([Дата]) from [Валюта] ))
from [Валюта])[Даты]
inner join [Валюта] v1 on v1.[Дата]=[Даты].[Дата_текущ]
inner join [Валюта] v2 on v2.[Дата]=[Даты].[Дата_текущ] and v2.[Обозначение]='USD'
inner join [Валюта] v3 on v3.[Дата]=[Даты].[Дата_пред] and v3.[Обозначение]=v1.[Обозначение]
inner join [Валюта] v4 on v4.[Дата]=[Даты].[Дата_пред] and v4.[Обозначение]='USD'
order by [v1].[Обозначение]

ошибка: Предложение ORDER BY не допускается в представлениях, встроенных функциях, производных таблицах, вложенных запросах и обобщенных табличных выражениях, если не указано TOP или FOR XML.

а мне order by нужен для вида:

Валюта Курс к руб. (ЦБ РФ) Изм., +/- Курс к USD Изм., +/-
EUR 39,1136 -0,0049 1,2415 0,0196
USD 31,5041 -0,5091

Как сохранить такой порядок следования строк?
14 авг 12, 14:46    [13009345]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
qwerty112
Guest
ola_ya_22,

какой сервер ?

create view [Цена_Валюта]
as select top 9223372036854775807 [Валюта]=[v1].[Обозначение],[Курс к руб. (ЦБ РФ)]=[v1].[Курс_к_руб],[Изм., +/-]=round(v1.[Курс_к_руб]-v3.[Курс_к_руб],4),[Курс к USD]=round(v1.[Курс_к_руб]/v2.[Курс_к_руб],4),[Изм.,+/-]=round(v1.[Курс_к_руб]/v2.[Курс_к_руб]-v3.[Курс_к_руб]/v4.[Курс_к_руб],4)
from
(select
[Дата_текущ]= (select MAX([Дата])),
[Дата_пред]=(select MAX([Дата]) from [Валюта] where [Дата]<(select [Дата]=max([Дата]) from [Валюта] ))
from [Валюта])[Даты]
inner join [Валюта] v1 on v1.[Дата]=[Даты].[Дата_текущ]
inner join [Валюта] v2 on v2.[Дата]=[Даты].[Дата_текущ] and v2.[Обозначение]='USD'
inner join [Валюта] v3 on v3.[Дата]=[Даты].[Дата_пред] and v3.[Обозначение]=v1.[Обозначение]
inner join [Валюта] v4 on v4.[Дата]=[Даты].[Дата_пред] and v4.[Обозначение]='USD'
order by [v1].[Обозначение]

14 авг 12, 14:58    [13009482]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
qwerty112,
ms sql server 2008 r2
14 авг 12, 15:12    [13009622]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
совсем никаких предложений?(((
16 авг 12, 16:55    [13021973]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104760
ola_ya_22
совсем никаких предложений?(((

Использовать ORDER BY в запросе, который ваш клиент отправляет серверу
16 авг 12, 16:58    [13022003]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
Glory,
order by c представлениями не работает((((
при выполнении выдает вышенаписанную ошибку
16 авг 12, 17:12    [13022116]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
aleks2
Guest
ola_ya_22
Glory,
order by c представлениями не работает((((
при выполнении выдает вышенаписанную ошибку


Разучите хранимые процедуры чтоль? Там order by допустим.
16 авг 12, 17:21    [13022187]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104760
ola_ya_22
order by c представлениями не работает

"С" представлением и "В" представлении - это разные вещи

ola_ya_22
при выполнении выдает вышенаписанную ошибку

Вы написали текст создания представления, а не его использования
16 авг 12, 17:24    [13022212]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
qwerty112
Guest
ola_ya_22
qwerty112,
ms sql server 2008 r2

нуу, тогда так можете попробывать, может ещё не "залатали" :)

create view [Цена_Валюта]
as select top (select 100) percent [Валюта]=[v1].[Обозначение],[Курс к руб. (ЦБ РФ)]=[v1].[Курс_к_руб],[Изм., +/-]=round(v1.[Курс_к_руб]-v3.[Курс_к_руб],4),[Курс к USD]=round(v1.[Курс_к_руб]/v2.[Курс_к_руб],4),[Изм.,+/-]=round(v1.[Курс_к_руб]/v2.[Курс_к_руб]-v3.[Курс_к_руб]/v4.[Курс_к_руб],4)
from
(select
[Дата_текущ]= (select MAX([Дата])),
[Дата_пред]=(select MAX([Дата]) from [Валюта] where [Дата]<(select [Дата]=max([Дата]) from [Валюта] ))
from [Валюта])[Даты]
inner join [Валюта] v1 on v1.[Дата]=[Даты].[Дата_текущ]
inner join [Валюта] v2 on v2.[Дата]=[Даты].[Дата_текущ] and v2.[Обозначение]='USD'
inner join [Валюта] v3 on v3.[Дата]=[Даты].[Дата_пред] and v3.[Обозначение]=v1.[Обозначение]
inner join [Валюта] v4 on v4.[Дата]=[Даты].[Дата_пред] and v4.[Обозначение]='USD'
order by [v1].[Обозначение]


но, "це хибний шлях",
правильнее делать так как говорит Glory
select * from MyView order by [Обозначение]

с клиента
16 авг 12, 17:26    [13022227]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
(select [Товар]=e1.[Название_товара],[FOB]=e1.[Страна_производитель],[Период поставки]=e1.[Период_поставки],[Цена USD]= round(e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]),2),[Изм.,+/-]=round((round(e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]),2))-(round(e2.[Стоимость_EUR]*(v4.[Курс_к_руб]/v3.[Курс_к_руб]),2)),2),[Цена EUR]=e1.[Стоимость_EUR],[Изм.,+/-]=round(e1.[Стоимость_EUR]-e2.[Стоимость_EUR],2),[Цена руб]= round((e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]))*v1.[Курс_к_руб],2),[Изм,+/-]=round(((e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]))*v1.[Курс_к_руб])-((e2.[Стоимость_EUR]*(v4.[Курс_к_руб]/v3.[Курс_к_руб]))*v3.[Курс_к_руб]),2)
from
(select
[Дата_текущ]= (select MAX([Дата])),
[Дата_пред]=(select MAX([Дата]) from [европа_масла] where [Дата]<(select [Дата]=max([Дата]) from [европа_масла] ))
from [европа_масла])[Даты]
inner join [Валюта] v1 on v1.[Дата]=[Даты].[Дата_текущ] and v1.[Обозначение]='USD'
inner join [Валюта] v2 on v2.[Дата]=[Даты].[Дата_текущ] and v2.[Обозначение]='EUR'
inner join [Валюта] v3 on v3.[Дата]=[Даты].[Дата_пред] and v3.[Обозначение]=v1.[Обозначение]
inner join [Валюта] v4 on v4.[Дата]=[Даты].[Дата_пред] and v4.[Обозначение]='EUR'
inner join [европа_масла] e1 on e1.[Дата]=[Даты].[Дата_текущ]
inner join [европа_масла] e2 on e2.[Дата]=[Даты].[Дата_пред] and e1.[Название_товара]=e2.[Название_товара] and e1.[Период_поставки]=e2.[Период_поставки] )
order by e1.[Название_товара] asc,e1.[Период_поставки] asc


выдает результат

Товар FOB Период поставки Цена USD Изм.,+/- Цена EUR Изм.,+/- Цена руб Изм,+/-
Пальмовое масло РД Малазия авг 12 - сен 12 NULL NULL NULL NULL NULL NULL
Пальмовое масло РД Малазия окт 12 - дек 12 NULL NULL NULL NULL NULL NULL
Пальмовое масло РД Малазия янв 13 - мар 13 NULL NULL NULL NULL NULL NULL
Пальмовый олеин Малазия авг 12 - сен 12 NULL NULL NULL NULL NULL NULL
Пальмовый олеин Малазия окт 12 - дек 12 NULL NULL NULL NULL NULL NULL
Пальмовый олеин Малазия янв 13 - мар 13 NULL NULL NULL NULL NULL NULL
Подсолнечное масло нераф EU авг 12 - сен 12 NULL NULL NULL NULL NULL NULL
Подсолнечное масло нераф EU окт 12 - дек 12 NULL NULL NULL NULL NULL NULL
Подсолнечное масло нераф EU янв 13 - мар 13 NULL NULL NULL NULL NULL NULL
Рапсовое масло нераф Дания авг 12 - окт 12 1210,27 -27,03 985 -15 38604,42 -346,68
Рапсовое масло нераф Дания ноя 12 - янв 13 1225,01 -12,29 997 -3 39074,72 123,62
Рапсовое масло нераф Дания фев 13 - апр 13 1222,56 -14,74 995 -5 38996,34 45,24
Рапсовое масло РД Германия авг 12 - окт 12 1320,85 3,12 1075 10 42131,72 648,8
Рапсовое масло РД Германия ноя 12 - янв 13 1308,56 -15,35 1065 -5 41739,8 62,12
Рапсовое масло РД Германия фев 13 - апр 13 1308,56 -15,35 1065 -5 41739,8 62,12
Соевое масло нераф Дания авг 12 - окт 12 1234,84 3,73 1005 10 39388,26 631,92
Соевое масло нераф Дания ноя 12 - янв 13 1238,53 -4,96 1008 3 39505,84 359,98
Соевое масло нераф Дания фев 13 - апр 13 1247,13 -2,54 1015 5 39780,18 439,57
Соевое масло РД Германия авг 12 - сен 12 1329,45 6,78 1082 13 42406,07 767,34
Соевое масло РД Германия окт 12 - дек 12 1334,37 6,75 1086 13 42562,84 768,31
Соевое масло РД Германия янв 13 - мар 13 1344,2 6,68 1094 13 42876,38 770,24


Как сделать чтобы для соевого масла РД, рапсовое масло нераф, рапсовое масло нераф,рапсовое масло рд осталось как есть.
а для остальных масел реализовался несколько другой вариант.
Это из-за того, что дано в первом случае цена eur а в другом usd.алгоритм разный.
как реализовать чтобы в зависимости от типа масла реализовался один или другой алгоритм?

таблица [европа_масла] (дата,название товара,страна_производитель,базис_поставки,стоимость_usd,стоимость_eur,стоимоть_rur)
Валюта(дата, курс_к_руб)
20 авг 12, 12:50    [13036283]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
qwerty112
Guest
автор
Малазия

20 авг 12, 12:56    [13036320]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104760
ola_ya_22
Это из-за того, что дано в первом случае цена eur а в другом usd.алгоритм разный.
как реализовать чтобы в зависимости от типа масла реализовался один или другой алгоритм?

Проверять валюту и реализовывать один или другой алгоритм

Сообщение было отредактировано: 20 авг 12, 12:58
20 авг 12, 12:58    [13036329]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
if (t1.[Цена EUR] is not null )
begin
select *
from
(select e1.[Название_товара] AS [Товар] ,[FOB]=e1.[Страна_производитель],[Период поставки]=e1.[Период_поставки],[Цена USD]= round(e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]),2),[Изм., +/-]=round((round(e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]),2))-(round(e2.[Стоимость_EUR]*(v4.[Курс_к_руб]/v3.[Курс_к_руб]),2)),2),[Цена EUR]=e1.[Стоимость_EUR],[Изм.,+/-]=round(e1.[Стоимость_EUR]-e2.[Стоимость_EUR],2),[Цена руб]= round((e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]))*v1.[Курс_к_руб],2),[Изм,+/-]=round(((e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]))*v1.[Курс_к_руб])-((e2.[Стоимость_EUR]*(v4.[Курс_к_руб]/v3.[Курс_к_руб]))*v3.[Курс_к_руб]),2)
from
(select
[Дата_текущ]= (select MAX([Дата])),
[Дата_пред]=(select MAX([Дата]) from [европа_масла] where [Дата]<(select [Дата]=max([Дата]) from [европа_масла] ))
from [европа_масла])[Даты]
inner join [Валюта] v1 on v1.[Дата]=[Даты].[Дата_текущ] and v1.[Обозначение]='USD'
inner join [Валюта] v2 on v2.[Дата]=[Даты].[Дата_текущ] and v2.[Обозначение]='EUR'
inner join [Валюта] v3 on v3.[Дата]=[Даты].[Дата_пред] and v3.[Обозначение]=v1.[Обозначение]
inner join [Валюта] v4 on v4.[Дата]=[Даты].[Дата_пред] and v4.[Обозначение]='EUR'
inner join [европа_масла] e1 on e1.[Дата]=[Даты].[Дата_текущ]
inner join [европа_масла] e2 on e2.[Дата]=[Даты].[Дата_пред] and e1.[Название_товара]=e2.[Название_товара] and e1.[Период_поставки]=e2.[Период_поставки]
)t1
order by t1.[Товар] asc, t1.[Период поставки] asc
end



ошибка:Сообщение 4104, уровень 16, состояние 1, строка 1
Не удалось привязать составной идентификатор "t1.Цена EUR".

помогите пожалуйста исправить.
20 авг 12, 15:11    [13037466]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
У вас в t1 нету ни [Цена EUR], ни [Товар], ни [Период поставки].

ЗЫ: И освойте уже наконец тег оформления src -- ломать глаза о ваши кашеобразные запросы нет никакого желания.
20 авг 12, 15:35    [13037673]     Ответить | Цитировать Сообщить модератору
 Re: Запрос работает некорректно.Код прилагается.помогите пожалуйста  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
invm,
if (select distinct [европа_масла].[Стоимость_EUR] from [европа_масла] where [Стоимость_EUR] is not null)= any (select 1)     
begin
select *
from
(select e1.[Название_товара] AS [Товар] ,[FOB]=e1.[Страна_производитель],[Период поставки]=e1.[Период_поставки],[Цена USD]= round(e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]),2),[Изм., +/-]=round((round(e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]),2))-(round(e2.[Стоимость_EUR]*(v4.[Курс_к_руб]/v3.[Курс_к_руб]),2)),2),[Цена EUR]=e1.[Стоимость_EUR],[Изм.,+/-]=round(e1.[Стоимость_EUR]-e2.[Стоимость_EUR],2),[Цена руб]= round((e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]))*v1.[Курс_к_руб],2),[Изм,+/-]=round(((e1.[Стоимость_EUR]*(v2.[Курс_к_руб]/v1.[Курс_к_руб]))*v1.[Курс_к_руб])-((e2.[Стоимость_EUR]*(v4.[Курс_к_руб]/v3.[Курс_к_руб]))*v3.[Курс_к_руб]),2)
from 
(select
[Дата_текущ]= (select MAX([Дата])),
[Дата_пред]=(select MAX([Дата]) from [европа_масла] where [Дата]<(select [Дата]=max([Дата]) from [европа_масла] )) 
from [европа_масла])[Даты]
inner join [Валюта] v1 on v1.[Дата]=[Даты].[Дата_текущ] and v1.[Обозначение]='USD'
inner join [Валюта] v2 on v2.[Дата]=[Даты].[Дата_текущ] and v2.[Обозначение]='EUR'
inner join [Валюта] v3 on v3.[Дата]=[Даты].[Дата_пред] and v3.[Обозначение]=v1.[Обозначение]
inner join [Валюта] v4 on v4.[Дата]=[Даты].[Дата_пред] and v4.[Обозначение]='EUR'
inner join [европа_масла] e1 on e1.[Дата]=[Даты].[Дата_текущ]
inner join [европа_масла] e2 on e2.[Дата]=[Даты].[Дата_пред]  and e1.[Название_товара]=e2.[Название_товара] and e1.[Период_поставки]=e2.[Период_поставки] 
)t1
order by t1.[Товар] asc, t1.[Период поставки] asc
end
[src][/SRC]
20 авг 12, 15:48    [13037759]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить