Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenos días, me dirijo a ustedes de nuevo ya que me ha surgido una duda con respecto a un punto en particular.
En esta ocasión tengo tres tablas de las cuales sus campos son iguales pero de diferente compañía, tengo que sacar una sola tabla de esas tres, y los ingresos(Income) de las 3 compañías deben verse como una sola tabla, si bien debería ser posible para el usuario seleccionar los ingresos de cada compañía por separado. esta ultima parte es la que no logro realizar adecuadamente,
Tengo estos datos, no se si al renombrar el id del cliente concatenado con el nombre de la compañía me podría diferenciar esa selección
Por su tiempo gracias.
Filial:
LOAD
CustID&'-'&CpnyName as CustomerID,
KamID,
Currency,
IncomeTot,
SKU,
TypeProduct,
Mark,
QtyInvc,
Unit,
UnitMeasure,
SkuTotWeight,
SkuQty,
WeightSku,
Package,
SkuPrice,
TotInvc as Income,
CpnyName
FROM
[vs_BiIncomeFILIALES.QVD]
(qvd);
join(Filial)
Idea:
LOAD
CustID&'-'&CpnyName as CustomerID,
KamID,
Currency,
SKU,
TypeProduct,
Mark,
QtyInvc,
Unit,
UnitMeasure,
SkuTotWeight,
SkuQty,
WeightSku,
Package,
SkuPrice,
TotInvc as Income,
CpnyName
FROM
[vs_BiIncomeIIDEA.QVD]
(qvd);
join(Filial)
Sisana:
LOAD
CustID&'-'&CpnyName as CustomerID,
KamID,
Currency,
SKU,
TypeProduct,
Mark,
QtyInvc,
Unit,
UnitMeasure,
SkuTotWeight,
SkuQty,
WeightSku,
Package,
SkuPrice,
TotInvc as Income,
CpnyName
FROM
[vs_BiIncomeSISANA.QVD]
(qvd);
Erick,
Tienes que conseguir que las tres tablas tengan los mismos campos y con los mismos nombres.
Cuando lo logres no necesitarás ni JOINS ni CONCATENATE.
En caso de que te falte un campo en origen, puedes crearlo con NULL() o con un valor fijo 'VALOR A'
Saludos
Joaquín
Hola Erick:
Prueba esto
Filial:
LOAD
CustID as CustomerID
KamID,
Currency,
IncomeTot,
SKU,
TypeProduct,
Mark,
QtyInvc,
Unit,
UnitMeasure,
SkuTotWeight,
SkuQty,
WeightSku,
Package,
SkuPrice,
TotInvc as Income,
CpnyName
FROM
[vs_BiIncomeFILIALES.QVD]
(qvd);
// join(Filial) //
Idea:
LOAD
CustID as CustomerID
KamID,
Currency,
SKU,
IncomeTot,
TypeProduct,
Mark,
QtyInvc,
Unit,
UnitMeasure,
SkuTotWeight,
SkuQty,
WeightSku,
Package,
SkuPrice,
TotInvc as Income,
CpnyName
FROM
[vs_BiIncomeIIDEA.QVD]
(qvd);
// join(Filial) //
Sisana:
LOAD
CustID as CustomerID
KamID,
Currency,
SKU,
IncomeTot,
TypeProduct,
Mark,
QtyInvc,
Unit,
UnitMeasure,
SkuTotWeight,
SkuQty,
WeightSku,
Package,
SkuPrice,
TotInvc as Income,
CpnyName
FROM
[vs_BiIncomeSISANA.QVD]
(qvd);
No necesitas el JOIN, tienes que lograr que la lista de campos sea la misma; tus usuarios podrán seleccionar por el campo CpnyName
Saludos
Joaquín
Hola Erick, "join" sirve para agrupar registros segúnlos valores de los campos comunes, en este caso no va a encontrar ningún registro para agrupar porque el campo CpnyName será distinto en cada tabla.
Para este caso podrías usar Concatenate(), que añade registros a la tabla anterior (o a la que especifiques entre los paréntesis:
Filial:
LOAD ....
FROM [vs_BiIncomeFILIALES.QVD] (qvd);
Concatenate(Filial)
LOAD ...
FROM [vs_BiIncomeIIDEA.QVD] (qvd);
....
Me faltaría saber como es el resto del documento pero en principio no necesitarías la clave múltiple (CustID&'-'&CpnyName) porque en esta misma tabla tienes el código de cliente y la empresa, las selecciones en el campo 'CpnyName' debería diferenciarte los ingresos por compañía.
Hola Erick:
Necesitas más ayuda ?
Si has resuelto tu pregunta, marca como útiles o correctas las respuestas que te hayan ayudado.
Saludos
Joaquín
Hola joaquin, agradezco sus respuestas, aun no respondía porque me atore con algo diferente, ya intente realizar esas propuestas ciertamente es una concatenación, a lo cual me causa conflicto, ya que la tabla de Filiales en el campo CpnyName, no existe nada de datos a lo cual realice esta acción: asignar una etiqueta fija a la tabla Filial.
sera correcto?
Incomes:
LOAD Distinct
'Filial' as Company,// asignar una etiqueta fija ya que company name no existen registros****
num(CustID)&'-'&'Filial' AS CustomerID,
autonumber(SKU&Mark&Package&TypeProduct&UnitMeasure) AS SkuID,
QtyInvc * SkuTotWeight AS [Weight Total],
KamID,
BuID as Description ,
IdIncome,
//BillName,
OrdNbr as NumOrder,
OrdDate as OrderDate,
InvcNbr as InvoiceNum,
InvcDate as InvoiceDate,
//IdBatch,
IncDate as FechaID,
Currency,
IncomeTot as [Income Total],
//SKU,
TypeProduct as [Type of Product],
Mark,
QtyInvc as [Invoice Qty],
//Unit,
UnitMeasure,
SkuTotWeight,
SkuQty as [Sku Qty],
WeightSku as [weight Sku],
Package,
SkuPrice as [Sku Price],
TotInvc AS [Total Invoice]
FROM
[Proyecto\QVDs Extraccion\vs_BiIncomeFILIALES.QVD]
(qvd);
//***********************IDEA*******************************************
Concatenate(Incomes)
Idea:
LOAD
num(CustID)&'-'&CpnyName AS CustomerID,
QtyInvc * SkuTotWeight AS [Weight Total],
KamID,
BuID,
IdIncome,
//BillName,
OrdNbr as NumOrder,
OrdDate as OrderDate,
InvcNbr as InvoiceNum,
InvcDate as InvoiceDate,
//IdBatch,
IncDate as FechaID,
Currency,
IncomeTot as [Income Total],
SKU AS SkuID,
TypeProduct as [Type of Product],
Mark,
QtyInvc as [Invoice Qty],
//Unit,
UnitMeasure,
SkuTotWeight,
SkuQty as [Sku Qty],
WeightSku as [weight Sku],
Package,
SkuPrice as [Sku Price],
TotInvc AS [Total Invoice],
CpnyName,
'Idea' as Company
FROM
[Proyecto\QVDs Extraccion\vs_BiIncomeIIDEA.QVD]
(qvd);
//**************************************Sisana**************************************+
Concatenate(Incomes)
Sisana:
LOAD
num(CustID)&'-'&CpnyName AS CustomerID,
KamID,
BuID,
IdIncome,
//BillName,
OrdNbr as NumOrder,
OrdDate as OrderDate,
InvcNbr as InvoiceNum,
InvcDate as InvoiceDate,
//IdBatch,
IncDate as FechaID,
Currency,
IncomeTot as [Income Total],
SKU AS SkuID,
TypeProduct as [Type of Product],
Mark,
QtyInvc as [Invoice Qty],
//Unit,
UnitMeasure,
SkuTotWeight,
SkuQty as [Sku Qty],
WeightSku as [weight Sku],
Package,
SkuPrice as [Sku Price],
TotInvc AS [Total Invoice],
CpnyName,
'Sisana' as Company
FROM
[Proyecto\QVDs Extraccion\vs_BiIncomeSISANA.QVD]
(qvd);
//******Tabla Final de Income*****************************
Erick,
Tienes que conseguir que las tres tablas tengan los mismos campos y con los mismos nombres.
Cuando lo logres no necesitarás ni JOINS ni CONCATENATE.
En caso de que te falte un campo en origen, puedes crearlo con NULL() o con un valor fijo 'VALOR A'
Saludos
Joaquín
Joaquin muchas gracias por aclararme esta duda, y ya quedo; ahora me surgió una mas usando esa tabla de Incomes, con otra tabla yo tengo una de cambio de moneda, en esta ultima tengo fechas que como es obvio el monto de dolar, peso y euro son variables y cambian al día, ahora lo que quisiera hacer es, tomar la fecha mas próxima para realizar el cambio correspondiente al día que se toma el monto de Income tengo esto:
Tipos de Cambio:
LOAD fecha as FechaID,
USD,
MN,
EURO
FROM
[..\..\QVDs Extraccion\Vs_TiposdeCambio.QVD]
(qvd);
esta tabla la uno a la final de incomes y en ella, tengo estas columnas
Facts:
LOAD
Distinct
Company,
CustomerID,
SkuID,
[Weight Total],
KamID,
IdIncome,
NumOrder,
OrderDate,
InvoiceNum,
InvoiceDate,
IDFecha,
Currency,
[Income Total],
[Invoice Qty],
[Sku Price],
[Total Invoice],
FechaID,
USD,
MN,
EURO,
IF(Currency='USD',[Income Total]*USD) AS [USD To Pesos],
IF(Currency='USD',[Income Total]*1) AS [Dollars],
IF(Currency='USD',[Income Total]/USD/EURO) AS [USD To Euros],
IF(Currency='MN',[Income Total]*1) AS [Pesos],
IF(Currency='MN',[Income Total]*USD) AS [Pesos To USD],
IF(Currency='MN',[Income Total]*EURO) AS [Pesos To Euros],
IF(Currency='EURO',[Income Total]*EURO) AS [Euros To Pesos],
IF(Currency='EURO',[Income Total]/EURO/USD) AS [Euros To USD],
IF(Currency='EURO',[Income Total]*1) AS [Euros]
resident TempFacts;
DROP Table TempFacts;
Hola Erick:
Abre otro hilo para esta segunda pregunta, la mayoría de nosotros solo leemos los hilos cerrados para buscar respuestas.
Saludos
Joaquín