locked
Dúvida em SQL - Select RRS feed

  • Pergunta

  • Boa noite

    Estou fazendo um trabalho com base na tabela Northwind.

    Tenho as seguintes colunas com alguns atributos:

    - Tabela Orders - (Pedidos)
    OrderID (PK) - (Codigo do Pedido)
    CustumerID (FK) - (Codigo do Cliente)
    EmployeeID (FK) - (Codigo do Vendedor)
    OrderDate - (Data)
    Freigth - (Frete)

    - Tabela Order Details - (Itens do Pedido)
    OrderID (PK) - (Codigo do Pedido)
    ProductID (FK) - (Codigo do Produto)
    UnitPrice - (Preço unitário do Produto)
    Quantity - (Quantidade do Produto)
    Discount - (Desconto)

    - Tabela - (Vendedor)
    EmployeeID (PK) - (Codigo do Vendedor)
    FirstName - (Nome do Vendedor)

    - Tabela Customers - (Cliente)
    CustomerID (PK) - (Codigo do Cliente)

    Preciso fazer um SELECT para Consultar histórico de pedidos (Orders) de um Cliente (CustomerID), exibir apenas o código do pedido (OrderID), a data do pedido (OrderDate), o nome do vendedor(FirstName), o valor dos produtos (unity price * quantity) , o valor do frete (freigth) e o valor total do pedido ( (unity price * quantity) - discount) - freigth

    Não consigo fazer essa consulta, consegui fazer apenas o SQL abaixo:

    SELECT
        O.Orderid,
        SUM((OD.UnitPrice * OD.Quantity)-OD.Discount) TOTAL, SUM(O.Freight) FRETE

    FROM Orders O
        INNER JOIN [Order Details] OD
            ON O.Orderid = OD.Orderid
        INNER JOIN Employees E
            ON O.EmployeeID = E.EmployeeID
        INNER JOIN Products P
            ON P.ProductID = OD.ProductID
        INNER JOIN Customers C
            ON C.CustomerID = O.CustomerID

    WHERE C.CustomerID LIKE '%A'

    GROUP BY C.Orderid
    sábado, 11 de agosto de 2012 04:53

Todas as Respostas

  • Alguem tem alguma ideia de como resolver isso ?

    Obrigado

    sábado, 11 de agosto de 2012 16:51
  • Esta forma está correta para esse caso:


    SELECT 
    	O.OrderID, 
    	CONVERT(VARCHAR(10),O.OrderDate,103),
    	E.FirstName, O.CustomerID, 
    	CAST(OD.ValorProdutos AS VARCHAR(10)) AS 'Valor Produtos',
    	CAST(OD.ValorTotal AS VARCHAR(10)) AS 'Valor Total'
    
    FROM
    	(
    		SELECT
    			OD.OrderID,
    			ValorProdutos = SUM(OD.Quantity*OD.UnitPrice),
    			ValorTotal = SUM((OD.Quantity*OD.UnitPrice)-Discount+O.Freight)
    			
    		FROM [Order Details] OD
    			INNER JOIN Orders O
    				ON OD.OrderID = O.OrderID
    		GROUP BY OD.OrderID
    	) OD
    
    	INNER JOIN Orders O
    		ON O.OrderID = OD.OrderID
    	INNER JOIN Employees E
    		ON O.EmployeeID = E.EmployeeID
    	INNER JOIN Customers C
    		ON C.CustomerID = O.CustomerID
    
    WHERE C.CustomerID LIKE 'V%'
    
    ORDER BY O.OrderID


    sábado, 11 de agosto de 2012 22:16
  • Você já conseguiu o que precisava?

    Se não, em que ponto está?


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 29 de agosto de 2012 16:39
    Moderador
  • Consegui sim.

    Trab. na Alterdata ?

    Obrigado

    quarta-feira, 29 de agosto de 2012 17:24