Sigo con mis dudas de los Querys, tengo este query
SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) ,T0.*
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
Union All
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char),T0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Pero quiero agregarle una columna de @presupuesto_det, la columna DocEntry y presupuesto_det se liga con IGE1 por el campo IGE1.BaseEntry = @presupuesto_det.U_OF, con otra union no creo se pueda como podria hacerse la union ya de 4 tablas practicamente
Puedes hacer la union de cuantos querys quieras con la cantidad de tablas que sea, lo unico que hay que tener en cuenta es que cada consulta debe tener la misma cantidad de campos y los tipos de datos de cada columna deben ser compatibles.
SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) ,T2.[NuevoCampo],T0.*
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
INNER JOIN [@presupuesto_det] T2 ON T0.BaseEntry = T2.U_OF
UNION ALL
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char),T2.[NuevoCampo],T0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNER JOIN [@presupuesto_det] T2 ON T0.BaseEntry = T2.U_OF
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
2 Me gusta
Pero mas bien al resultado de la UNION ALL quiero compararlo con la otra tabla para agregarle la columna que necesito
Asi?
SELECT TS.*,T2.[NuevoCampo]
FROM ( SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) ,T0.*
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
UNION ALL
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char),T0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167 ) TS
INNER JOIN [@presupuesto_det] T2 ON TS.BaseEntry = T2.U_OF
1 me gusta
Si funciona pero de los 4075 resultados que deberia de dar da 7mil casi lo duplica
SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) , T0.BaseEntry
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
UNION ALL
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char), T0.BaseEntry
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
ORDER BY T0.BaseEntry, CodGrupo
Asi lo modifique
SELECT TS.*, T2.[DocEntry]
FROM (SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) , T0.BaseEntry
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
UNION ALL
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char), T0.BaseEntry
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167) TS
JOIN [dbo].[@PRESUPUESTO_DET] T2 ON TS.BaseEntry = T2.U_OF