Join a tabella di un campo calcolato di query

SQL Server, Oracle, MySQL...
Rispondi

Rockarl
Messaggi: 28 | Topic creati
Iscritto il: ven 24 lug 2020, 9:20
Ringraziato: 1 volta
Contatta:

Join a tabella di un campo calcolato di query

Messaggio 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?
Allegati
Star schema query selezione
Star schema query selezione
Query Selezione.png (58.52 KiB) Visto 337 volte


Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

Join a tabella di un campo calcolato di query

Messaggio 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]
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Rispondi