Pagina 1 di 1

Join a tabella di un campo calcolato di query

Inviato: lun 6 mar 2023, 9:14
da Rockarl
Buongiorno,
ho il seguente "problema" con la query seguente:

Codice: Seleziona tutto

select
	DISTINCTROW DettaglioOrdini.IdPreventivo,
	Preventivi.TipoCommessa,
	DettaglioOrdini.Posizione,
	[DettaglioOrdini].[IdOrdine] & "-" & [Posizione] as [Concatena Ord-Pos],
	DettaglioOrdini.Descrizione,
	DettaglioOrdini.UM,
	DettaglioOrdini.Quantità,
	DettaglioOrdini.ImportoUnitario,
	DettaglioOrdini.Sconto,
	[Centri di Costo].CodiceCentro,
	[Centri di Costo].CentroCosto,
	right([Centri di Costo].[CodiceCentro], Len([Centri di Costo].[CodiceCentro])-InStr(1,[Centri di Costo].[CodiceCentro], "-")) as [ContoCoGe Descr],
	left([Centri di Costo].[CodiceCentro],(InStr(1,[Centri di Costo].[CodiceCentro], "-")-1)) as CdC,
	"IT" & String(8-Len([CdC])-2,
	"0") & [CdC] as Profit,
	DettaglioOrdini.NumFatturaFornitore,
	DettaglioOrdini.DataFattura,
	Ordini.DataOrdine,
	Ordini.IdFornitore,
	Fornitori.NomeSocietà,
	DettaglioOrdini.IdOrdine,
	Sum([Quantità]*([ImportoUnitario]-([ImportoUnitario]*[Sconto]/ 100))) as Importo,
	DettaglioOrdini.EvasoRiga
from
	(Ordini
inner join Fornitori on
	Ordini.IdFornitore = Fornitori.IDFornitore)
inner join ((DettaglioOrdini
inner join [Centri di Costo] on
	DettaglioOrdini.IdCentroCosto = [Centri di Costo].IdCentroCosto)
inner join Preventivi on
	DettaglioOrdini.IdPreventivo = Preventivi.IdPreventivo) on
	Ordini.IDOrdine = DettaglioOrdini.IdOrdine
group by
	DettaglioOrdini.IdPreventivo,
	Preventivi.TipoCommessa,
	DettaglioOrdini.Posizione,
	[DettaglioOrdini].[IdOrdine] & "-" & [Posizione],
	DettaglioOrdini.Descrizione,
	DettaglioOrdini.UM,
	DettaglioOrdini.Quantità,
	DettaglioOrdini.ImportoUnitario,
	DettaglioOrdini.Sconto,
	[Centri di Costo].CodiceCentro,
	[Centri di Costo].CentroCosto,
	DettaglioOrdini.NumFatturaFornitore,
	DettaglioOrdini.DataFattura,
	Ordini.DataOrdine,
	Ordini.IdFornitore,
	Fornitori.NomeSocietà,
	DettaglioOrdini.IdOrdine,
	DettaglioOrdini.EvasoRiga,
	year([Ordini].[DataOrdine])
having
	(((year([Ordini].[DataOrdine])) between [Anno Iniziale] and [Anno Finale]))
order by
	DettaglioOrdini.IdOrdine;
Calcolo i 3 campi evidenziati in rosso in una query di selezione attraverso qualche formula sul testo a partire dal campo [Centri di Costo].[CodiceCentro] ma ho bisogno che Conto CoGe Descr appena calcolato riporti anche il suo codice contenuto in una tabella di anagrafica, cerchiata nell'immagine (NB: il campo in questione può avere solo 3 occorrenze).

C'è un modo di implementare questo Join tra la query di selezione del codice e la tabella di anagrafica in questa stessa query senza doverne creare un'altra finale con il solo join all'anagrafica?

Join a tabella di un campo calcolato di query

Inviato: lun 6 mar 2023, 18:37
da Enrico Galli
Ciao, se ho capito bene direi che devi fare un

Codice: Seleziona tutto

left join [Conto CoGe (RC)] on
	right([Centri di Costo].[CodiceCentro], Len([Centri di Costo].[CodiceCentro])-InStr(1,[Centri di Costo].[CodiceCentro], "-")) = [Conto CoGe (RC)].[CONTO COGE DESCR]
e poi nella SELECT puoi mettere il tuo [Conto CoGe (RC)].[CONTO COGE]