You are on page 1of 12

SELECT (clusula de Transact-SQL)

SQL Server 2012 Otras versiones

Este tema an no ha recibido ninguna valoracin - Valorar este tema Especifica las columnas que la consulta debe devolver. Convenciones de sintaxis de Transact- !" intaxis Copiar
E"ECT # $"" % &' T'(CT ) # TO* + expression , # *E-CE(T ) # .'T/ T'E ) ) 0select1list2 0select1list2 334 5 6 % 5 table1name % vie71name % table1alias 8.6 %5 # 5 table1name % vie71name % table1alias 8. ) 5 column1name % 9'&E(T'T: % 9-O.;<'& 8 % udt1column1name # 5 . % 33 8 5 5 propert=1name % field1name 8 % method1name + argument # >...n) , 8 ) % expression # # $ ) column1alias ) 8 % column1alias 4 expression 8 # >...n )

$rgumentos $"" Especifica que el con?unto de resultados puede incluir filas duplicadas. $"" es el valor predeterminado. &' T'(CT Especifica que el con?unto de resultados solo puede incluir filas nicas. "os valores (<"" se consideran iguales desde el punto de vista de la palabra clave &' T'(CT. TO* +expression , # *E-CE(T ) # .'T/ T'E ) 'ndica que el con?unto de resultados de la consulta solamente devolver@ un primer con?unto o porcenta?e de filas especificado. expression puede ser un nmero o un porcenta?e de las filas. *or compatibilidad con versiones anteriores> se permite el uso de TO* expression sin parAntesis en las instrucciones E"ECT> aunque no se recomienda. *ara obtener m@s informacin> vea TO* +Transact!",. 0 select1list 2 Columnas que se seleccionar@n para el con?unto de resultados. "a lista de seleccin es una serie de expresiones separadas por comas. El nmero m@ximo de expresiones que se puede especificar en la lista de seleccin es B.CDE. 6 Especifica que se deben devolver todas las columnas de todas las tablas = vistas de la cl@usula F-OG. "as columnas se devuelven por tabla o vista> tal como se especifique en la cl@usula F-OG> en el orden en que se encuentran en la tabla o vista. table1name % vie71name % table1alias.6

"imita el @mbito de 6 a la tabla o vista especificada. column1name Es el nombre de una columna que se va a devolver. *ara impedir referencias ambiguas> como sucederHa si dos tablas de la cl@usula F-OG tuvieran columnas con nombres duplicados> se debe calificar column1name. *or e?emplo> las tablas alesOrder/eader = alesOrder&etail de la base de datos $dventure.orIsJCKJ tienen ambas una columna denominada Godified&ate. i se combinan las dos tablas en una consulta> se puede especificar la fecha de modificacin de las entradas alesOrder&etail en la lista de seleccin como alesOrder&etail.Godified&ate. expression Es una constante> una funcin o una combinacin de nombres de columna> constantes = funciones conectados mediante un operador> varios operadores o una subconsulta. 9'&E(T'T: &evuelve la columna de identidad. *ara obtener m@s informacin> vea '&E(T'T: +propiedad de Transact!",> $"TE- T$L"E +Transact- !", = C-E$TE T$L"E +Transact- !",. i m@s de una tabla de la cl@usula F-OG contiene una columna con la propiedad '&E(T'T:> se debe calificar 9'&E(T'T: con el nombre de tabla especHficoM por e?emplo> TK.9'&E(T'T:. 9-O.;<'& &evuelve la columna ;<'& de fila. i m@s de una tabla de la cl@usula F-OG tiene la propiedad -O.;<'&CO"> se debe calificar 9-O.;<'& con el nombre de tabla especHficoM por e?emplo> TK.9-O.;<'&. udt1column1name Es el nombre de la columna que tiene un tipo C"- +Common "anguage -untime, definido por el usuario que se va a devolver. Nota !" erver Ganagement tudio devuelve los valores de los tipos definidos por el usuario en representacin binaria. *ara devolver los valores de los tipos definidos por el usuario en formato NG" o de cadena> use C$ T o CO(VE-T. 5 . % 33 8 Especifica un mAtodo> una propiedad o un campo de un tipo definido por el usuario C"-. <se . para mAtodos> propiedades o campos de instancia +no est@ticos,. <se 33 para mAtodos> propiedades o campos est@ticos. *ara invocar un mAtodo> una propiedad o un campo de un tipo definido por el usuario C"-> debe disponer de permiso ENEC<TE en el tipo. propert=1name Es una propiedad pblica de udt1column1name. field1name Es un miembro de datos pblico de udt1column1name. method1name Es un mAtodo pblico udt1column1name que utiliOa uno o varios argumentos. method1name no puede ser un mAtodo mutador.

En el e?emplo siguiente se seleccionan los valores de la columna "ocation> definida como de tipo point> de la tabla Cities> mediante la invocacin de un mAtodo del tipo denominado &istance3 Copiar
C-E$TE T$L"E Cities + (ame varchar+JC,> tate varchar+JC,> "ocation point ,M ;O &EC"$-E Pp point +QJ> JQ,> Pdistance floatM ;O E"ECT "ocation.&istance +Pp, F-OG CitiesM

column1 alias Es un nombre alternativo que se utiliOa para reemplaOar el nombre de la columna en el con?unto de resultados de la consulta. *or e?emplo> se puede especificar un alias como !uantit=> !uantit= to &ate o !t= para una columna denominada quantit=. "os alias se emplean tambiAn para especificar nombres para los resultados de expresionesM por e?emplo3 < E $dventure.orIsJCKJM ;O E"ECT $V;+<nit*rice, $ #$verage *rice) F-OG ales. alesOrder&etailM column1alias se puede utiliOar en una cl@usula O-&E- L:. in embargo> no puede utiliOarse en una cl@usula ./E-E> ;-O<* L: o /$V'(;. i la expresin de la consulta forma parte de una instruccin &EC"$-E C<- O-> en la cl@usula FO- <*&$TE no se puede utiliOar column1alias. Comentarios "a longitud de los datos devueltos para las columnas text o ntext incluidas en la lista de seleccin se establece en el valor menor de los siguientes3 el tamaRo real de la columna text> la configuracin predeterminada de TENT 'SE para la sesin o el lHmite de la aplicacin codificado de forma rHgida. *ara cambiar la longitud del texto devuelto de la sesin> utilice la instruccin ET. &e forma predeterminada> la longitud m@xima de los datos de texto que se devuelven con una instruccin E"ECT es de B.CCC b=tes. El Gotor de base de datos de !" erver provoca la excepcin TKK = revierte la instruccin que se est@ e?ecutando en ese momento si se produce alguno de estos comportamientos3 "a instruccin E"ECT produce una fila de resultados o una fila de la tabla de traba?o intermedia que supera los U.CEC b=tes. "a instruccin &E"ETE> '( E-T o <*&$TE intenta realiOar una accin en una fila que supera los U.CEC b=tes.

e produce un error si no se proporciona un nombre a una columna creada con una instruccin E"ECT '(TO o C-E$TE V'E..

Ejemplos de SELECT (Transact-SQL)


En este tema se proporcionan e?emplos del uso de la instruccin E"ECT. $.<sar E"ECT para recuperar filas = columnas En el siguiente e?emplo se muestran tres fragmentos de cdigo. En el primer e?emplo de cdigo> se devuelven todas las filas +no se especifica la cl@usula ./E-E, = todas las columnas +con 6, de la tabla *roduct de la base de datos $dventure.orIsJCKJ . Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT 6 F-OG *roduction.*roduct O-&E- L: (ame $ CM -- $lternate 7a=. < E $dventure.orIsJCKJM ;O E"ECT p.6 F-OG *roduction.*roduct $ p O-&E- L: (ame $ CM ;O

En este e?emplo se devuelven todas las filas +no se ha especificado la cl@usula ./E-E, = solo un subcon?unto de las columnas +(ame> *roduct(umber> "ist*rice, de la tabla *roduct de la base de datos $dventure.orIsJCKJ . $dem@s> se agrega un encabeOado de columna. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT (ame> *roduct(umber> "ist*rice $ *rice F-OG *roduction.*roduct O-&E- L: (ame $ CM ;O

En este e?emplo solo se devuelven las filas de *roduct que tienen una lHnea de productos de - = cu=o valor correspondiente a los dHas para fabricar es inferior a B. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT (ame> *roduct(umber> "ist*rice $ *rice F-OG *roduction.*roduct ./E-E *roduct"ine 4 V-V $(& &a=sToGanufacture 0 B O-&E- L: (ame $ CM ;O

L.<sar E"ECT con encabeOados de columna = c@lculos En los siguientes e?emplos se devuelven todas las filas de la tabla *roduct. En el primer e?emplo se devuelven las ventas totales = los descuentos de cada producto. En el segundo e?emplo se calculan los beneficios totales de cada producto. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT p.(ame $ *roduct(ame> (on&iscount ales 4 +Order!t= 6 <nit*rice,> &iscounts 4 ++Order!t= 6 <nit*rice, 6 <nit*rice&iscount, F-OG *roduction.*roduct $ p '((E- WO'( ales. alesOrder&etail $ sod O( p.*roduct'& 4 sod.*roduct'& O-&E- L: *roduct(ame &E CM ;O

Xsta es la consulta que calcula el beneficio de cada producto de cada pedido de venta. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT VTotal income isV> ++Order!t= 6 <nit*rice, 6 +K.C - <nit*rice&iscount,,> V for V> p.(ame $ *roduct(ame F-OG *roduction.*roduct $ p '((E- WO'( ales. alesOrder&etail $ sod O( p.*roduct'& 4 sod.*roduct'& O-&E- L: *roduct(ame $ CM ;O

C.<sar &' T'(CT con E"ECT En el siguiente e?emplo se utiliOa &' T'(CT para evitar la recuperacin de tHtulos duplicados. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT &' T'(CT WobTitle F-OG /uman-esources.Emplo=ee O-&E- L: WobTitleM ;O

&.Crear tablas con E"ECT '(TO En el primer e?emplo se crea una tabla temporal denominada YLic=cles en tempdb. Transact- !" Copiar
< E tempdbM ;O 'F OLWECT1'& +(VYLic=clesV>(V<V, ' (OT (<"" &-O* T$L"E YLic=clesM ;O E"ECT 6 '(TO YLic=cles F-OG $dventure.orIsJCKJ.*roduction.*roduct ./E-E *roduct(umber "'ZE VLZ[VM ;O

En el segundo e?emplo se crea la tabla permanente (e7*roducts. Transact- !" Copiar


< E $dventure.orIsJCKJM ;O 'F OLWECT1'&+Vdbo.(e7*roductsV> V<V, ' (OT (<"" &-O* T$L"E dbo.(e7*roductsM ;O $"TE- &$T$L$ E $dventure.orIsJCKJ ET -ECOVE-: L<"Z1"O;;E&M ;O E"ECT 6 '(TO dbo.(e7*roducts F-OG *roduction.*roduct ./E-E "ist*rice 2 9JT $(& "ist*rice 0 9KCCM ;O $"TE- &$T$L$ E $dventure.orIsJCKJ ET -ECOVE-: F<""M ;O

E.<sar subconsultas correlacionadas En el siguiente e?emplo se muestran consultas que son sem@nticamente equivalentes = se demuestra la diferencia entre la utiliOacin de la palabra clave EN' T = la palabra clave '(. $mbos son e?emplos de subconsultas v@lidas que recuperan una instancia de cada nombre de producto cu=o modelo es un ?erse= de manga larga con logotipo = cu=os nmeros de *roductGodel'& coinciden en las tablas *roduct = *roductGodel. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT &' T'(CT (ame

F-OG *roduction.*roduct $ p ./E-E EN' T + E"ECT 6 F-OG *roduction.*roductGodel $ pm ./E-E p.*roductGodel'& 4 pm.*roductGodel'& $(& pm.(ame "'ZE V"ong- leeve "ogo Werse=[V,M ;O -- O< E $dventure.orIsJCKJM ;O E"ECT &' T'(CT (ame F-OG *roduction.*roduct ./E-E *roductGodel'& '( + E"ECT *roductGodel'& F-OG *roduction.*roductGodel ./E-E (ame "'ZE V"ong- leeve "ogo Werse=[V,M ;O

En el siguiente e?emplo se utiliOa '( en una subconsulta correlativa o repetitiva. e trata de una consulta que depende de la consulta externa de sus valores. e e?ecuta varias veces> una veO por cada fila que pueda seleccionar la consulta externa. Esta consulta recupera una instancia del nombre = apellido de cada empleado cu=a bonificacin en la tabla ales*erson sea de TCCC.CC = cu=os nmeros de identificacin coincidan en las tablas Emplo=ee = ales*erson. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT &' T'(CT p."ast(ame> p.First(ame F-OG *erson.*erson $ p WO'( /uman-esources.Emplo=ee $ e O( e.LusinessEntit='& 4 p.LusinessEntit='& ./E-E TCCC.CC '( + E"ECT Lonus F-OG ales. ales*erson $ sp ./E-E e.LusinessEntit='& 4 sp.LusinessEntit='&,M ;O

"a subconsulta anterior de esta instruccin no se puede evaluar independientemente de la consulta externa. (ecesita el valor Emplo=ee.Emplo=ee'&> aunque este valor cambia a medida que el Gotor de base de datos de !" erver examina diferentes filas de Emplo=ee. <na subconsulta correlativa se puede usar tambiAn en la cl@usula /$V'(; de una consulta externa. En este e?emplo se buscan los modelos cu=o precio m@ximo es superior al doble de la media del modelo. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT pK.*roductGodel'& F-OG *roduction.*roduct $ pK ;-O<* L: pK.*roductGodel'& /$V'(; G$N+pK."ist*rice, 24 $"" + E"ECT $V;+pJ."ist*rice, F-OG *roduction.*roduct $ pJ ./E-E pK.*roductGodel'& 4 pJ.*roductGodel'&,M ;O

En este e?emplo se utiliOan dos subconsultas correlativas para buscar los nombres de los empleados que han vendido un producto especHfico. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT &' T'(CT pp."ast(ame> pp.First(ame F-OG *erson.*erson pp WO'( /uman-esources.Emplo=ee e O( e.LusinessEntit='& 4 pp.LusinessEntit='& ./E-E pp.LusinessEntit='& '( + E"ECT ales*erson'& F-OG ales. alesOrder/eader ./E-E alesOrder'& '( + E"ECT alesOrder'& F-OG ales. alesOrder&etail ./E-E *roduct'& '( + E"ECT *roduct'&

F-OG *roduction.*roduct p ./E-E *roduct(umber 4 VLZ-GEUL-BJV,,,M ;O

F.<sar ;-O<* L: En este e?emplo se busca el total de cada pedido de venta de la base de datos. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT alesOrder'&> <G+"ineTotal, $ F-OG ales. alesOrder&etail ;-O<* L: alesOrder'& O-&E- L: alesOrder'&M ;O ubTotal

&ebido a la cl@usula ;-O<* L:> solo se devuelve una fila que contiene la suma de todas las ventas por cada pedido de venta. ;.<sar ;-O<* L: con varios grupos En este e?emplo se busca el precio medio = la suma de las ventas anuales hasta la fecha> agrupados por 'd. de producto e 'd. de oferta especial. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'&> pecialOffer'&> $V;+<nit*rice, $ #$verage *rice)> <G+"ineTotal, $ ubTotal F-OG ales. alesOrder&etail ;-O<* L: *roduct'&> pecialOffer'& O-&E- L: *roduct'&M ;O

/.<sar ;-O<* L: = ./E-E En el siguiente e?emplo se colocan los resultados en grupos despuAs de recuperar nicamente las filas con precios superiores a 9KCCC. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roductGodel'&> $V;+"ist*rice, $ #$verage "ist *rice) F-OG *roduction.*roduct ./E-E "ist*rice 2 9KCCC ;-O<* L: *roductGodel'& O-&E- L: *roductGodel'&M ;O

'.<sar ;-O<* L: con una expresin En este e?emplo se agrupa por una expresin. *uede agrupar por una expresin si Asta no inclu=e funciones de agregado. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT $V;+Order!t=, $ #$verage !uantit=)> (on&iscount ales 4 +Order!t= 6 <nit*rice, F-OG ales. alesOrder&etail ;-O<* L: +Order!t= 6 <nit*rice, O-&E- L: +Order!t= 6 <nit*rice, &E CM ;O

W.<sar ;-O<* L: con O-&E- L: En este e?emplo se busca el precio medio de cada tipo de producto = se ordenan los resultados por precio medio. Transact- !" Copiar

< E $dventure.orIsJCKJM ;O E"ECT *roduct'&> $V;+<nit*rice, $ #$verage *rice) F-OG ales. alesOrder&etail ./E-E Order!t= 2 KC ;-O<* L: *roduct'& O-&E- L: $V;+<nit*rice,M ;O

Z.<sar la cl@usula /$V'(; En el primer e?emplo se muestra una cl@usula /$V'(; con una funcin de agregado. $grupa las filas de la tabla alesOrder&etail por 'd. de producto = elimina aquellos productos cu=as cantidades de pedido medias son cinco o menos. En el segundo e?emplo se muestra una cl@usula /$V'(; sin funciones de agregado. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'& F-OG ales. alesOrder&etail ;-O<* L: *roduct'& /$V'(; $V;+Order!t=, 2 T O-&E- L: *roduct'&M ;O

En esta consulta se utiliOa la cl@usula "'ZE en la cl@usula /$V'(;. Copiar


< E $dventure.orIsJCKJ M ;O E"ECT alesOrder'&> CarrierTracIing(umber F-OG ales. alesOrder&etail ;-O<* L: alesOrder'&> CarrierTracIing(umber /$V'(; CarrierTracIing(umber "'ZE VBL&[V O-&E- L: alesOrder'& M ;O

".<sar /$V'(; = ;-O<* L: En el siguiente e?emplo se muestra el uso de las cl@usulas ;-O<* L:> /$V'(;> ./E-E = O-&E- L: en una instruccin E"ECT. ;enera grupos = valores de resumen pero lo hace tras eliminar los productos cu=os precios superan los JT 9 = cu=as cantidades de pedido medias son inferiores a T. TambiAn organiOa los resultados por *roduct'&. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'& F-OG ales. alesOrder&etail ./E-E <nit*rice 0 JT.CC ;-O<* L: *roduct'& /$V'(; $V;+Order!t=, 2 T O-&E- L: *roduct'&M ;O

G.<sar /$V'(; con <G = $V; En el siguiente e?emplo se agrupa la tabla alesOrder&etail por 'd. de producto = solo se inclu=en aquellos grupos de productos cu=os pedidos suman m@s de 9KCCCCCC.CC = cu=as cantidades de pedido medias son inferiores a Q. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'&> $V;+Order!t=, $ $verage!uantit=> <G+"ineTotal, $ Total F-OG ales. alesOrder&etail ;-O<* L: *roduct'& /$V'(; <G+"ineTotal, 2 9KCCCCCC.CC $(& $V;+Order!t=, 0 QM ;O

*ara ver los productos cu=as ventas totales son superiores a 9JCCCCCC.CC> utilice esta consulta3 Transact- !"

Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'&> Total 4 <G+"ineTotal, F-OG ales. alesOrder&etail ;-O<* L: *roduct'& /$V'(; <G+"ineTotal, 2 9JCCCCCC.CCM ;O

i desea asegurarse de que ha= al menos mil quinientos elementos para los c@lculos de cada producto> use /$V'(; CO<(T+6, 2 KTCC para eliminar los productos que devuelven totales inferiores a KTCC elementos vendidos. "a consulta serHa la siguiente3 Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'&> <G+"ineTotal, $ Total F-OG ales. alesOrder&etail ;-O<* L: *roduct'& /$V'(; CO<(T+6, 2 KTCCM ;O

(.<sar la sugerencia del optimiOador '(&EN En el e?emplo siguiente se muestran dos formas de usar la sugerencia del optimiOador '(&EN. En el primer e?emplo se muestra cmo obligar al optimiOador a que use un Hndice no clster para recuperar filas de una tabla> mientras que en el segundo e?emplo se obliga a realiOar un recorrido de tabla mediante un Hndice igual a C. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT pp.First(ame> pp."ast(ame> e.(ational'&(umber F-OG /uman-esources.Emplo=ee $ e .'T/ +'(&EN+$Z1Emplo=ee1(ational'&(umber,, WO'( *erson.*erson $ pp on e.LusinessEntit='& 4 pp.LusinessEntit='& ./E-E "ast(ame 4 VWohnsonVM ;O -- Force a table scan b= using '(&EN 4 C. < E $dventure.orIsJCKJM ;O E"ECT pp."ast(ame> pp.First(ame> e.WobTitle F-OG /uman-esources.Emplo=ee $ e .'T/ +'(&EN 4 C, WO'( *erson.*erson $ pp O( e.LusinessEntit='& 4 pp.LusinessEntit='& ./E-E "ast(ame 4 VWohnsonVM ;O

G.<sar O*T'O( = las sugerencias ;-O<* En el e?emplo siguiente se muestra cmo se usa la cl@usula O*T'O( +;-O<*, con una cl@usula ;-O<* L:. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT *roduct'&> Order!t=> <G+"ineTotal, $ Total F-OG ales. alesOrder&etail ./E-E <nit*rice 0 9T.CC ;-O<* L: *roduct'&> Order!t= O-&E- L: *roduct'&> Order!t= O*T'O( +/$ / ;-O<*> F$ T KC,M ;O

O.<sar la sugerencia de consulta <('O( En el e?emplo siguiente se usa la sugerencia de consulta GE-;E <('O(. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O E"ECT LusinessEntit='&> WobTitle> /ire&ate> Vacation/ours> icI"eave/ours F-OG /uman-esources.Emplo=ee $ eK <('O( E"ECT LusinessEntit='&> WobTitle> /ire&ate> Vacation/ours> icI"eave/ours F-OG /uman-esources.Emplo=ee $ eJ

O*T'O( +GE-;E <('O(,M ;O

*.<sar una instruccin <('O( simple En el e?emplo siguiente> el con?unto de resultados inclu=e el contenido de las columnas *roductGodel'& = (ame de las tablas *roductGodel = ;loves. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O 'F OLWECT1'& +Vdbo.;lovesV> V<V, ' (OT (<"" &-O* T$L"E dbo.;lovesM ;O -- Create ;loves table. E"ECT *roductGodel'&> (ame '(TO dbo.;loves F-OG *roduction.*roductGodel ./E-E *roductGodel'& '( +Q> B,M ;O -- /ere is the simple union. < E $dventure.orIsJCKJM ;O E"ECT *roductGodel'&> (ame F-OG *roduction.*roductGodel ./E-E *roductGodel'& (OT '( +Q> B, <('O( E"ECT *roductGodel'&> (ame F-OG dbo.;loves O-&E- L: (ameM ;O

!.<sar E"ECT '(TO con <('O( En el e?emplo siguiente> la cl@usula '(TO de la segunda instruccin E"ECT especifica que la tabla denominada *roduct-esults contiene el con?unto final de resultados de la unin de las columnas designadas de las tablas *roductGodel = ;loves. Tenga en cuenta que la tabla ;loves se crea en la primera instruccin E"ECT. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O 'F OLWECT1'& +Vdbo.*roduct-esultsV> V<V, ' (OT (<"" &-O* T$L"E dbo.*roduct-esultsM ;O 'F OLWECT1'& +Vdbo.;lovesV> V<V, ' (OT (<"" &-O* T$L"E dbo.;lovesM ;O -- Create ;loves table. E"ECT *roductGodel'&> (ame '(TO dbo.;loves F-OG *roduction.*roductGodel ./E-E *roductGodel'& '( +Q> B,M ;O < E $dventure.orIsJCKJM ;O E"ECT *roductGodel'&> (ame '(TO dbo.*roduct-esults F-OG *roduction.*roductGodel ./E-E *roductGodel'& (OT '( +Q> B, <('O( E"ECT *roductGodel'&> (ame F-OG dbo.;lovesM ;O E"ECT *roductGodel'&> (ame F-OG dbo.*roduct-esultsM

-.<sar <('O( con dos instrucciones E"ECT = O-&E- L: El orden de algunos par@metros empleados con la cl@usula <('O( es importante. En el e?emplo siguiente se muestra el uso correcto e incorrecto de <('O( en dos instrucciones E"ECT en las que se va a cambiar el nombre de una columna en el resultado. Transact- !" Copiar

< E $dventure.orIsJCKJM ;O 'F OLWECT1'& +Vdbo.;lovesV> V<V, ' (OT (<"" &-O* T$L"E dbo.;lovesM ;O -- Create ;loves table. E"ECT *roductGodel'&> (ame '(TO dbo.;loves F-OG *roduction.*roductGodel ./E-E *roductGodel'& '( +Q> B,M ;O \6 '(CO--ECT 6\ < E $dventure.orIsJCKJM ;O E"ECT *roductGodel'&> (ame F-OG *roduction.*roductGodel ./E-E *roductGodel'& (OT '( +Q> B, O-&E- L: (ame <('O( E"ECT *roductGodel'&> (ame F-OG dbo.;lovesM ;O \6 CO--ECT 6\ < E $dventure.orIsJCKJM ;O E"ECT *roductGodel'&> (ame F-OG *roduction.*roductGodel ./E-E *roductGodel'& (OT '( +Q> B, <('O( E"ECT *roductGodel'&> (ame F-OG dbo.;loves O-&E- L: (ameM ;O

.<sar <('O( de tres instrucciones E"ECT para mostrar los efectos de $"" = los parAntesis En los siguientes e?emplos se utiliOa <('O( para combinar los resultados de tres tablas que tienen las mismas T filas de datos. En el primer e?emplo se utiliOa <('O( $"" para mostrar los registros duplicados = se devuelven las KT filas. En el segundo e?emplo se utiliOa <('O( sin $"" para eliminar las filas duplicadas de los resultados combinados de las tres instrucciones E"ECT = se devuelven T filas. En el tercer e?emplo se utiliOa $"" con el primer <('O( = los parAntesis inclu=en al segundo <('O( que no utiliOa $"". El segundo <('O( se procesa en primer lugar porque se encuentra entre parAntesis. &evuelve T filas porque no se utiliOa la opcin $"" = se quitan los duplicados. Estas T filas se combinan con los resultados del primer E"ECT mediante las palabras clave <('O( $"". Esto no quita los duplicados entre los dos con?untos de T filas. El resultado final es de KC filas. Transact- !" Copiar
< E $dventure.orIsJCKJM ;O 'F OLWECT1'& +Vdbo.Emplo=eeOneV> V<V, ' (OT (<"" &-O* T$L"E dbo.Emplo=eeOneM ;O 'F OLWECT1'& +Vdbo.Emplo=eeT7oV> V<V, ' (OT (<"" &-O* T$L"E dbo.Emplo=eeT7oM ;O 'F OLWECT1'& +Vdbo.Emplo=eeThreeV> V<V, ' (OT (<"" &-O* T$L"E dbo.Emplo=eeThreeM ;O E"ECT pp."ast(ame> pp.First(ame> e.WobTitle '(TO dbo.Emplo=eeOne F-OG *erson.*erson $ pp WO'( /uman-esources.Emplo=ee $ e O( e.LusinessEntit='& 4 pp.LusinessEntit='& ./E-E "ast(ame 4 VWohnsonVM ;O E"ECT pp."ast(ame> pp.First(ame> e.WobTitle '(TO dbo.Emplo=eeT7o F-OG *erson.*erson $ pp WO'( /uman-esources.Emplo=ee $ e O( e.LusinessEntit='& 4 pp.LusinessEntit='& ./E-E "ast(ame 4 VWohnsonVM ;O E"ECT pp."ast(ame> pp.First(ame> e.WobTitle '(TO dbo.Emplo=eeThree F-OG *erson.*erson $ pp WO'( /uman-esources.Emplo=ee $ e O( e.LusinessEntit='& 4 pp.LusinessEntit='& ./E-E "ast(ame 4 VWohnsonVM

;O -- <nion $"" E"ECT "ast(ame> First(ame> WobTitle F-OG dbo.Emplo=eeOne <('O( $"" E"ECT "ast(ame> First(ame >WobTitle F-OG dbo.Emplo=eeT7o <('O( $"" E"ECT "ast(ame> First(ame>WobTitle F-OG dbo.Emplo=eeThreeM ;O E"ECT "ast(ame> First(ame>WobTitle F-OG dbo.Emplo=eeOne <('O( E"ECT "ast(ame> First(ame> WobTitle F-OG dbo.Emplo=eeT7o <('O( E"ECT "ast(ame> First(ame> WobTitle F-OG dbo.Emplo=eeThreeM ;O E"ECT "ast(ame> First(ame>WobTitle F-OG dbo.Emplo=eeOne <('O( $"" + E"ECT "ast(ame> First(ame> WobTitle F-OG dbo.Emplo=eeT7o <('O( E"ECT "ast(ame> First(ame> WobTitle F-OG dbo.Emplo=eeThree ,M ;O

You might also like