3
--01 Supongamos que usted desea ver el pasado y el IdPedido OrderDate de la última orden que fue enviada a París. Junto con esa información, dice que también le gustaría ver el OrderDate de la última orden de envío, independientemente de la CiudadDestinatario. Además de esto, también quisiera para calcular la diferencia de días entre las dos OrderDates diferentes. Aquí está mi T-SQL SELECT para lograr esto: SELECT TOP 1 OrderId, CONVERT(CHAR(10), OrderDate,121) Last_Paris_Order, (SELECT CONVERT(CHAR(10),MAX(OrderDate),121) FROM Northwind.dbo.Orders) Last_OrderDate, DATEDIFF(dd,OrderDate,(SELECT MAX(OrderDate) FROM Northwind.dbo.Orders)) Day_Diff FROM Northwind.dbo.Orders WHERE ShipCity = 'Paris' ORDER BY OrderDate DESC --02 Supongamos que una empresa le gustaría hacer algo de marketing específicas. Este marketing dirigido pondría en contacto con los clientes en el país con el menor número de pedidos. Se espera que este marketing dirigidas a aumentar las ventas totales en el país en cuestión. Aquí hay un ejemplo que utiliza una subconsulta para devolver la información de contacto del cliente para el país con el menor número de pedidos: SELECT Country, CompanyName, ContactName, ContactTitle, Phone FROM Northwind.dbo.Customers WHERE country = (SELECT TOP 1 country FROM Northwind.dbo.Customers C JOIN Northwind.dbo.Orders O ON C.CustomerId = O.CustomerID GROUP BY country ORDER BY count(*)) --03 La cláusula FROM identifica normalmente las tablas utilizadas en el T- SQL. Usted puede pensar de cada uno de los cuadros señalados en la cláusula FROM como un conjunto de registros. Bueno, una subconsulta es

Sub Consult As

Embed Size (px)

DESCRIPTION

dgsdggsdgssdg

Citation preview

Page 1: Sub Consult As

--01

Supongamos que usted desea ver el pasado y el IdPedido OrderDate de la última orden que fue enviada a París. Junto con esa información, dice que también le gustaría ver el OrderDate de la última orden de envío, independientemente de la CiudadDestinatario. Además de esto, también quisiera para calcular la diferencia de días entre las dos OrderDates diferentes. Aquí está mi T-SQL SELECT para lograr esto:

SELECT TOP 1 OrderId,CONVERT(CHAR(10), OrderDate,121) Last_Paris_Order,(SELECT CONVERT(CHAR(10),MAX(OrderDate),121)FROM Northwind.dbo.Orders) Last_OrderDate,DATEDIFF(dd,OrderDate,(SELECT MAX(OrderDate)FROM Northwind.dbo.Orders)) Day_DiffFROM Northwind.dbo.OrdersWHERE ShipCity = 'Paris'ORDER BY OrderDate DESC

--02

Supongamos que una empresa le gustaría hacer algo de marketing específicas. Este marketing dirigido pondría en contacto con los clientes en el país con el menor número de pedidos. Se espera que este marketing dirigidas a aumentar las ventas totales en el país en cuestión. Aquí hay un ejemplo que utiliza una subconsulta para devolver la información de contacto del cliente para el país con el menor número de pedidos:

SELECT Country,CompanyName,ContactName,ContactTitle,PhoneFROM Northwind.dbo.CustomersWHERE country = (SELECT TOP 1 countryFROM Northwind.dbo.Customers CJOIN Northwind.dbo.Orders OON C.CustomerId = O.CustomerIDGROUP BY countryORDER BY count(*))

--03

La cláusula FROM identifica normalmente las tablas utilizadas en el T-SQL. Usted puede pensar de cada uno de los cuadros señalados en la cláusula FROM como un conjunto de registros. Bueno, una subconsulta es sólo un conjunto de registros, y por lo tanto puede ser utilizada en la cláusula FROM como una tabla. Aquí hay un ejemplo donde se utiliza una subconsulta en la cláusula FROM de una instrucción SELECT:

SELECT au_lname,au_fname,title FROM (SELECT au_lname, au_fname, au_idFROM pubs.dbo.authorsWHERE state = 'CA') as AJOIN pubs.dbo.titleauthor ta ON A.au_id = ta.au_idJOIN pubs.dbo.titles t ON ta.title_id = t.title_id

Page 2: Sub Consult As

--04

En el siguiente ejemplo, se utilizó una subconsulta para encontrar el número de libros que la editorial ha publicado en la editorial no se encuentra en el estado de California. Para lograr esto se utilizó una subconsulta en una cláusula HAVING. Aquí está el código:

SELECT pub_name,COUNT(*) bookcntFROM pubs.dbo.titles tJOIN pubs.dbo.publishers p on t.pub_id = p.pub_idGROUP BY pub_nameHAVING p.pub_name IN (SELECT pub_nameFROM pubs.dbo.publishersWHERE state <> 'CA')

--05

Supongamos que desea un informe de todos "OrderID", donde el cliente no compra más del 10% de la cantidad media vendida para un producto determinado. De esta manera usted puede revisar estas órdenes, y, posiblemente, en contacto con los clientes, para ayudar a determinar si había una razón para la orden de baja cantidad. Una subconsulta correlacionada en una cláusula WHERE puede ayudarle a producir este informe. Aquí está una instrucción SELECT que produce la lista deseada de "OrderID's":

SELECT DISTINCT OrderIdFROM Northwind.dbo.[Order Details] ODWHERE Quantity > (SELECT AVG(Quantity) * .1FROM Northwind.dbo.[Order Details]WHERE OD.ProductID = ProductID)

--06

Diga sus organizaciones quiere ejecutar un programa de incentivos de un año de duración para aumentar los ingresos. Por lo tanto, se anuncian a sus clientes que si cada orden en que lugar, durante el año, es más de $ 750 que les dará un descuento al final del año en la tasa de de $ 75 por orden en que lugar. A continuación se muestra un ejemplo de cómo calcular el importe de la devolución. En este ejemplo se utiliza una subconsulta correlacionada en la cláusula de tener que identificar a los clientes que califican para recibir el reembolso.

SELECT C.CustomerID,COUNT(*) * 75 RebateFROM Northwind.DBO.Customers CJOIN Northwind.DBO.Orders O ON C.CustomerID = O.CustomerIDWHERE DATEPART(yy,OrderDate) = '1998'GROUP BY C.CustomerIdHAVING 750 < ALL(SELECT SUM(UnitPrice * Quantity * (1 - Discount))FROM Northwind.DBO.Orders OJOIN Northwind.DBO.[Order Details] OD ON O.OrderID = OD.OrderIDWHERE O.CustomerID = C.CustomerIdAND DATEPART(yy,O.OrderDate) = '1998'GROUP BY O.OrderId)

Page 3: Sub Consult As

--07

http://www.elguille.info/colabora/NET2005/Percynet_Subconsultas_en_SQL_Server.htm