Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Query con calcolo ripartizioni percentuali
giovedì 18 dicembre 2008 - 16.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
gio 18 dic 2008 - 16:14
Ciao a tutti, avrei bisogno del vostro aiuto per la creazione di una query un po' complessa
Lo scenario è il seguente:
tabella Progetti con un elenco di progetti
per ogni progetto posso avere piu fasi, tabella ProgettiFasi
ogni fase ha un valore
le fasi possono essere "estrattocontate" al cliente, tramite emissione di un EC, tabella EstrattiConto
in un EC posso quindi avere piu fasi, di progetti differenti, ma dello stesso cliente ovviamente, tabella EstrattiContoDettaglio
il totale EC (fatto quindi da piu fasi, eventualmente di diversi progetti) è poi organizzato in dilazioni, tabella EstrattiContoDilazioni
ogni dilazione viene poi fatturata singolarmente (rapporto 1:1)
io devo creare una query che mi visualizzi, per ogni progetto (questo è importate) la situazione, ovvero:
Totale EC fatturati (quindi somma dilazioni di EC fatturate) per progetto (utilizzando l'apposito campo presente nelle Dilazioni)
Totale EC da fatturare (quindi somma dilazioni di EC non ancora fatturate) per progetto (utilizzando l'apposito campo presente nelle Dilazioni)
Totale Fatturato "diretto" per Progetto, in questo caso non si è passato dall'Estratto Conto ma una fase è stata direttamente fatturata, è molto piu semplice in quanto basta utilizzare il riferimento FattureDettaglio.IDFase presente nel dettaglio Fatture
il problema si pone nelle prime due operazioni, dato che manca la relazione tra la dilazione ed il progetto di riferimento (avendo le dilazioni "spacchettature" diverse rispetto alle fasi/progetti che compongono l'EC), quindi la logica dovrebbe essere ricostruita in questo modo:
Fase P1 500
Fase P2 1500
Totale EC 2000
quindi ho una ripartizione del tipo
P1 33,33%
P2 66,66%
a questo punto se le dilazioni dell' EC erano
dilazione 1 1000 (ovviamente per ogni dilazione posso emettere fattura)
dilazione 2 1000 (ovviamente per ogni dilazione posso emettere fattura)
vuole dire che i 1000 valgono per
33,33% sul progetto P1 (quindi nel "contenitore" P1 metto 333)
66,66% sul progetto P2 (quindi nel "contenitore" P2 metto 666)
resta da decidere poi se la colonna è quella del
Totale EC fatturati (se EstrattiContoDilazioni.EmessaFT = true)
Totale EC da fatturare (se EstrattiContoDilazioni.EmessaFT = false)
Spero in un vostro aiuto... a me si incrociano gli occhi :-((((
Grazie infinite in anticipo!!!
CREATE TABLE [dbo].[Progetti](
[IDProgetto] [int] IDENTITY(1,1) NOT NULL,
[CodiceProgetto] [varchar](100) COLLATE Latin1_General_CI_AS NULL,
[Descrizione] [varchar](200) COLLATE Latin1_General_CI_AS NULL
CONSTRAINT [PK_Documenti] PRIMARY KEY CLUSTERED
(
[IDProgetto] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[ProgettiFasi](
[IDProgettoFase] [int] IDENTITY(1,1) NOT NULL,
[IDProgetto] [int] NULL,
[FaseInserireEC] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseInserireEC] DEFAULT ((0)),
[FaseInserireFT] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseInserireFT] DEFAULT ((0)),
[FaseEmessoEC] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseEmessoEC] DEFAULT ((0)),
[FaseEmessaFT] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseEmessaFT] DEFAULT ((0)),
[DescrizioneFase] [varchar](max) COLLATE Latin1_General_CI_AS NULL,
[DescrizioneIVA] [varchar](200) COLLATE Latin1_General_CI_AS NULL,
[IDAliquota] [int] NULL,
[ValoreImponibile] [decimal](18, 2) NULL CONSTRAINT [DF_ProgettiFasi_ValoreImponibile] DEFAULT ((0)),
[IDAzienda] [int] NULL,
CONSTRAINT [PK_Fasi] PRIMARY KEY CLUSTERED
(
[IDProgettoFase] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[EstrattiConto](
[IDEstrattoConto] [int] IDENTITY(1,1) NOT NUL
[IDCliente] [int] NULL,
[Incassato] [bit] NULL CONSTRAINT [DF_EstrattiConto_Incassato] DEFAULT ((0)),
[EmessaFT] [bit] NULL CONSTRAINT [DF_EstrattiConto_EmessaFT] DEFAULT ((0))
CONSTRAINT [PK_EstrattiConto] PRIMARY KEY CLUSTERED
(
[IDEstrattoConto] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[EstrattiContoDettaglio](
[IDEstrattoContoDettaglio] [int] IDENTITY(1,1) NOT NULL,
[IDEstrattoConto] [int] NULL,
[IDAliquota] [int] NULL,
[IDProgettoFase] [int] NULL,
[Descrizione] [varchar](200) COLLATE Latin1_General_CI_AS NULL,
[Imponibile] [decimal](18, 2) NULL,
CONSTRAINT [PK_EstrattoContoDettaglio] PRIMARY KEY CLUSTERED
(
[IDEstrattoContoDettaglio] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[EstrattiContoDilazioni](
[IDEstrattoContoDilazione] [int] IDENTITY(1,1) NOT NULL,
[IDEstrattoConto] [int] NULL,
[DataDilazione] [datetime] NULL,
[ValoreDilazione] [decimal](18, 2) NULL,
[Incassata] [bit] NULL CONSTRAINT [DF_EstrattiContoDilazioni_Incassata] DEFAULT ((0)),
[EmessaFT] [bit] NULL CONSTRAINT [DF_EstrattiContoDilazioni_EmessaFT] DEFAULT ((0)),
CONSTRAINT [PK_EstrattiContoDilazione] PRIMARY KEY CLUSTERED
(
[IDEstrattoContoDilazione] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[FattureDettaglio](
[IDFatturaDettaglio] [int] IDENTITY(1,1) NOT NULL,
[IDFattura] [int] NULL CONSTRAINT [DF_FattureDettaglio_IDFattura] DEFAULT ((0)),
[IDFase] [int] NULL CONSTRAINT [DF_FattureDettaglio_IDFase] DEFAULT ((0)),
[IDAliquota] [int] NULL,
[DescrizioneRiga] [varchar](max) COLLATE Latin1_General_CI_AS NULL,
[ValoreAliquota] [decimal](10, 4) NULL,
[ValoreRiga] [decimal](18, 4) NULL,
[IDProgetto] [int] NULL,
[Qt] [int] NULL CONSTRAINT [DF_FattureDettaglio_Qt] DEFAULT ((1)),
CONSTRAINT [PK_FattureDettaglio] PRIMARY KEY CLUSTERED
(
[IDFatturaDettaglio] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !