AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.10.2013, 10:50   #1  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Вложенный запрос SQL с помощью великого Query
Доброе утро, уважаемые разработчики!
Второй день пытаюсь сообразить, как реализовать следующую проблему:
Имею запрос на T-SQL, запрос вложенный, хочу его прикрутить к моему Query АОТ-овскому. Если подробнее: нужно производить сортировку по дате внутри груп, которые были сгруппированные по номенклатуре.
Если сделать сортировку Order by по номенклатуре, а потом по дате - будет неккоректно отображать, порядок сортировки пробовал менять - не подходит.
Подсказал коллега, что нужно смотреть в сторону составного запроса(Composite Query). Только вот как его полноценно использовать в данной ситуации - я пока не могу понять.
Составной запрос пробовал делать по данной статье equalized: Dynamics Ax composite queries
Либо как вариант - кодом сделать данную операцию что ли...
Подскажите, в какую сторону смотреть.
Спасибо заранее.

С уважением

Последний раз редактировалось user_ax; 07.10.2013 в 10:54.
Старый 07.10.2013, 11:25   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от user_ax Посмотреть сообщение
нужно производить сортировку по дате внутри груп, которые были сгруппированные по номенклатуре.
Если сделать сортировку Order by по номенклатуре, а потом по дате - будет неккоректно отображать
Если не сложно, можно небольшой пример того что нужно получить?
Старый 07.10.2013, 11:33   #3  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если не сложно, можно небольшой пример того что нужно получить?
Да, конечно.
Группировка во внутреннем запросе идёт по ItemId
А во внешнем запросе идёт сортировка по itemid и invoicedate.
Надеюсь понятно сказал

Вот запрос, результат которого на скриншоте:

X++:
SELECT * from
(
	select 
		vs.ITEMID [ITEMID2], 
		vi.PURCHID [PURCHID], 
		vi.INVOICEDATE  [INVOICEDATE2]
	from VENDSPLISTTRANS as vs 

	join VENDSPLISTJOUR as vj
		on vs.INTERNALSP = vj.INTERNALSP 

	left join VENDINVOICETRANS as vi
		on vs.INTERNALSP = vi.INTERNALSP
		and vs.ITEMID = vi.ITEMID

	join RCONTRACTTABLE as r
		on r.RCONTRACTACCOUNT = vj.RCONTRACTACCOUNT

	join INVENTTABLE as it
		on it.ITEMID = vs.ITEMID  

	where vj.SPDATE between '2013-09-25' and '2013-10-02'

	group by vs.itemid,
			 vi.PURCHID, 
			 vi.INVOICEDATE 
)as temp

 order by  
 temp.ITEMID2,
 temp.INVOICEDATE2
Миниатюры
Нажмите на изображение для увеличения
Название: 321.png
Просмотров: 528
Размер:	90.8 Кб
ID:	8416  
Старый 07.10.2013, 12:23   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от user_ax Посмотреть сообщение
Группировка во внутреннем запросе идёт по ItemId
А во внешнем запросе идёт сортировка по itemid и invoicedate.
Надеюсь понятно сказал
А почему бы во внутреннем запросе сразу не задать нужный порядок группировки?
Код:
group by vs.itemid, vi.INVOICEDATE, vi.PURCHID
Для чего нужен внешний запрос?
Старый 07.10.2013, 12:37   #5  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А почему бы во внутреннем запросе сразу не задать нужный порядок группировки?
Код:
group by vs.itemid, vi.INVOICEDATE, vi.PURCHID
Для чего нужен внешний запрос?
Потому что тогда группируется по номенклатурам в разрезе дат, это не то что мне нужно.
А вот если сгруппировать по itemid а потом по invoicedate получается по-моему то, что нужно!
Сейчас попробую query аотовскиий переделать.
Старый 07.10.2013, 12:39   #6  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Для чего нужен внешний запрос?
Думается, автору мешает PurchId, из-за которого он не может как следует отсортировать данные по дате накладной. Скорее всего это каприз пользователей, которые не в курсе, что аксапта не всё умеет делать, например вложенные запросы.
Еще не очень понятно, зачем автор прикрутил InventTable и RContractTable.
__________________
// no comments
Старый 07.10.2013, 12:41   #7  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от dech Посмотреть сообщение
Думается, автору мешает PurchId, из-за которого он не может как следует отсортировать данные по дате накладной. Скорее всего это каприз пользователей, которые не в курсе, что аксапта не всё умеет делать, например вложенные запросы.
Еще не очень понятно, зачем автор прикрутил InventTable и RContractTable.
Затем, что мне нужно брать данные из всех таблиц, которые в запросе и выводить из них определённые поля в отчёт.
И в группировке кроме этих 3-х полей ещё 10
Но я забыл, что от позиции полей при написании группировки может менятся конечный результат.
А пользователи да, капризные...
Старый 07.10.2013, 12:49   #8  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Query возвращает корректный запрос, согласно требованиям, а в отчёт выводится не совсем корректно, буду смотреть, что не так.
В любом случае, спасибо Вам, S.Kuskov, и Вам, dech, за Ваше потраченное время!
Старый 07.10.2013, 12:59   #9  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Попробуйте такой запрос (я тут правда успел убрать те 2 таблицы, которые посчитал ненужными):
X++:
select ITEMID from VENDSPLISTTRANS
    group by ITEMID

join VENDSPLISTJOUR
    where VENDSPLISTTRANS.INTERNALSP == VENDSPLISTJOUR.INTERNALSP 
      and VENDSPLISTJOUR.SPDATE >= 25\09\2013
      and VENDSPLISTJOUR.SPDATE <  02\10\2013

outer join PURCHID, INVOICEDATE from VENDINVOICETRANS
    where VENDSPLISTTRANS.INTERNALSP == VENDINVOICETRANS.INTERNALSP
      and VENDSPLISTTRANS.ITEMID == VENDINVOICETRANS.ITEMID
    group by INVOICEDATE, PURCHID
__________________
// no comments
Старый 07.10.2013, 14:00   #10  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
dech, я этот же запрос сделал через Query, спасибо Вам!
Теги
composite query, query, составной запрос sql

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вставка queryRun-а в запрос sql user_ax DAX: Программирование 8 04.10.2013 17:21
ax-erp: Get underlying SQL query using getSQLStatement [Dynamics AX 2012] Blog bot DAX Blogs 0 19.07.2012 18:11
dax-lessons: Get underlying SQL query using getSQLStatement [Dynamics AX 2012] Blog bot DAX Blogs 0 11.05.2012 18:11
Поймать SQL запрос при формировании отчета Qaz Qwerty DAX: Программирование 7 12.06.2008 01:46
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:50.