Пример использования подзапросов в секции WHERE и последующий фильтр в секции HAVING

Tsql теория > Пример использования подзапросов в секции WHERE и последующий фильтр в секции HAVING
04.07.2013 12:04:10



Статья:

Пример использования  подзапросов в секции WHERE  и последующий  фильтр в секции HAVING

SELECT

        h.[Товар_УИ] AS [Товар_УИ]

       ,h.[Заказ_УИ]

      ,h.[Заказ_Номер]

      ,h2.[Заказ_Дата] AS [Заказ_Дата]

    

      ,h.[Товар_Код]

      ,h.[Товар]

      ,sum(h.[ВПО_Количество]) AS ВПО_Количество

      ,sum(h.[ВПО_СуммаВалютаЗаказа]) AS ВПО_СуммаВалютаЗаказа

      ,sum(h.[ВПО_СуммаДоллар]) AS ВПО_СуммаДоллар

      ,sum(h.[ВПО_СуммаРуб]) AS ВПО_СуммаРуб

      ,sum(h.[ВПО_СуммаЕвро]) AS ВПО_СуммаЕвро

 

FROM  [tblЗаказы_Детали] h (nolock)

JOIN tblЗаказы_Реестр h2 (NOLOCK) ON h2.Заказ_УИ=h.Заказ_УИ 

 

WHERE h.ВПО_Количество >0

AND h2.[Заказ_Дата]= (select max(h20.[Заказ_Дата]) FROM tblЗаказы_Реестр  h20

                       JOIN [tblЗаказы_Детали] h21 on h21.Заказ_УИ=h20.Заказ_УИ AND h21.[Товар_УИ]=h.Товар_УИ

                       GROUP BY h21.[Товар_УИ])

 

 

 

GROUP BY

       h.[Заказ_УИ]

      ,h.[Заказ_Номер] 

      ,h.[Товар_УИ]

      ,h.[Товар_Код]

      ,h.[Товар]

      ,h2.[Заказ_Дата]

HAVING cast(h.[Заказ_Номер] AS INT)=(SELECT Top 1 h21.[Заказ_Номер] FROM tblЗаказы_Реестр  h20

                       JOIN [tblЗаказы_Детали] h21 on h21.Заказ_УИ=h20.Заказ_УИ AND h21.[Товар_УИ]=h.Товар_УИ

                                              GROUP BY h21.[Товар_УИ],h21.[Заказ_Номер] ORDER BY Заказ_Номер DESC)