|
v7: sql запрос. | ☑ | ||
---|---|---|---|---|
0
kalleka
21.03.12
✎
13:32
|
|select
| СпТН.ID as ТН, | Рег.СуммаРубОстаток as СуммаРубОстаток , | Тдат.tdate Период | FROM (select codeK,tdate from #GrDat) as Тдат | LEFT JOIN $Справочник.ТоварныеНаправления AS СпТН (nolock) ON Тдат.codeK = СпТН.id | LEFT OUTER JOIN (select top 1 Ост.СуммаРубОстаток, Ост.Период, Ост.ТН from #ОстаткиДни as Ост | where Ост.Период <= Тдат.tdate and Ост.ТН = Тдат.codeK | order by Ост.Период Desc) as Рег ON Рег.Период = Тдат.tdate and Рег.ТН = СпТН.ID"; ругается ТЗ= RS.ВыполнитьИнструкцию(ТекстЗапроса); {\\STORAGE\DOCUMENTS\PEREPELKIN\ОБЩИЕ\ОБРАБОТКИ\ФИНАНСИРОВАНИЕ ТОВАРНОГО НАПРАВЛЕНИЯ.ERT(98)}: State 42000, native 4104, message [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось привязать составной идентификатор "Тдат.tdate". Смысл запроса в следующем: есть таблица с днями #GrDat и таблица с остатками #ОстаткиДни GrDat примерно такой tdate codek 01.01.12 id1 02.01.12 id1 .... 25.01.12 id1 #ОстаткиДни примерно такой Период ТН СуммаРубОстаток 01.01.12 id1 1000 05.01.12 id1 1500 в итоге нужно получить таблицу Период ТН СуммаРубОстаток 01.01.12 id1 1000 02.01.12 id1 1000 03.01.12 id1 1000 04.01.12 id1 1000 05.01.12 id1 1500 ... ТО есть грубо говоря я получаю остатки по группировке на каждый день как мне правильно присоединить ОстаткиДни ??? |
|||
1
kalleka
21.03.12
✎
13:33
|
Проблема как я понимаю в том, что запрос не узнает Тдат.tdate в подзапросе... Как можно передать его??
|
|||
2
Ёпрст
21.03.12
✎
13:38
|
(0) алиясы добавь, для начала в селек листе
|
|||
3
Ёпрст
21.03.12
✎
13:41
|
ну и top 1 и сам селек выкини, оставь только левое соединение с #ОстаткиДни с условием присоединения по tdate и Id
|
|||
4
kalleka
21.03.12
✎
13:45
|
(3) если Top 1 выкинуть, то получится таблица
Период ТН СуммаРубОстаток 01.01.12 id1 1000 02.01.12 id1 0 03.01.12 id1 0 04.01.12 id1 0 05.01.12 id1 1500 а мне надо чтобы получилось Период ТН СуммаРубОстаток 01.01.12 id1 1000 02.01.12 id1 1000 03.01.12 id1 1000 04.01.12 id1 1000 05.01.12 id1 1500 |
|||
5
kalleka
21.03.12
✎
13:47
|
| LEFT OUTER JOIN #ОстаткиДни as Рег ON Рег.Период <= Тдат.tdate and Рег.ТН = СпТН.ID
может прокатить?? |
|||
6
Ёпрст
21.03.12
✎
13:47
|
(4) groub by сделай потом
|
|||
7
Ёпрст
21.03.12
✎
13:49
|
и... с чего это она у тебя такая получится ?
|
|||
8
Ёпрст
21.03.12
✎
13:50
|
На сколько я понял, у тебя есть остатки на разные дни и табличка всех дат за период. так ?
Ты хочешь , чтоб в "пропуски" дат был остаток от предыдущего дня ? |
|||
9
kalleka
21.03.12
✎
13:51
|
(8) все верно
|
|||
10
Ёпрст
21.03.12
✎
13:52
|
тогда тупо выкидываешь последний лефт джоин и подзапрос с select top 1 втыкаешь в самый верхний селект
|
|||
11
Ёпрст
21.03.12
✎
13:56
|
тип того
|select | СпТН.ID as ТН, |(select top 1 Ост.СуммаРубОстаток from #ОстаткиДни as Ост | where Ост.Период <= Тдат.tdate and Ост.ТН = Тдат.codeK | order by Ост.Период Desc) as СуммаРубОстаток , | Тдат.tdate Период | FROM (select codeK,tdate from #GrDat) as Тдат | LEFT JOIN $Справочник.ТоварныеНаправления AS СпТН (nolock) ON Тдат.codeK = СпТН.id |
|||
12
kalleka
21.03.12
✎
14:00
|
(11) Получилось спасибо
Пробовал похожий вариант, но также выдавал ошибку, другую. Видимо я ошибся еще раз спасибо) |
|||
13
dk
21.03.12
✎
14:00
|
стырено откуда-то
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |