Query Sql Server -help

martedì 03 novembre 2009 - 15.08

franziskus Profilo | Newbie

Salve ragazzi,
devo effettuare una query su un db che mi somma i dati di un campo, data una certa condizione, e li riporta le somme divise per codice prodotto su un'altro db.
questa è
SELECT dbo.Vp.[Sap Product code], dbo.Vp.[Sale date], dbo.Vp.[Sale quantity UMB] SUM dbo.Vp.Sale quantity UMB FROM dbo.Vp INNER JOIN dbo.somma ON Vp.Sap Product code=somma.Sap Product code WHERE ([Sap Product code] = '16662') OR ([Sap Product code] = '16661') OR ([Sap Product code] = '16663') OR ([Sap Product code] = '16664') OR ([Sap Product code] = '17189') OR ([Sap Product code] = '17190') OR ([Sap Product code] = '17191') OR ([Sap Product code] = '17192') OR ([Sap Product code] = '17802') OR ([Sap Product code] = '17803') OR ([Sap Product code] = '17804') OR ([Sap Product code] = '17805') GROUP BY [Sap Product code], [Sale date], [Sale quantity UMB] HAVING ([Sale date] LIKE '= 102009%') ORDER BY [Sale date]


grazie

speedx Profilo | Junior Member

ma la tua domanda qual'è?
//// Marcello C.

franziskus Profilo | Newbie

mi va in errore la query e non riesco a capire perchè

FrancescoGuadagno Profilo | Senior Member

e quale errore ottieni?
In ogni caso potresti cominciare a sostituire gli OR con una IN

where [Sap Product code] IN ('16662','16661')

giusto per rendere più leggibile la query

franziskus Profilo | Newbie

ho corretto la query

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

l'errore è questo:
Server: Msg 170, Level 15, State 1, Line 2 Line 2: Incorrect syntax near 'dbo'.


grazie, ciao

lbenaglia Profilo | Guru

>ho corretto la query
>
>SELECT dbo.Vp.[Sap Product code], dbo.Vp.[Sale date], dbo.Vp.[Sale quantity UMB]
>SUM dbo.Vp.Sale quantity UMB
...
>l'errore è questo:
>Server: Msg 170, Level 15, State 1, Line 2
>Line 2: Incorrect syntax near 'dbo'.

A me sembra sbagliato l'intero comando.
dbo è uno schema.
Vp non ne ho idea.

Come si chiama il db?
Come si chiama lo schema che contiene gli oggetti?

>grazie, ciao
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

FrancescoGuadagno Profilo | Senior Member

Potrebbero essere un pò di parentesi quadre mancanti: alcuni campi contengono spazi..
L'errore è proprio a livello di schema.

franziskus Profilo | Newbie

ho tolto lo schema dbo (tanto non mi serve ai fini della query)

ora:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

"Vp" e "somma" sono i nome delle due tabelle

dopo questa correzione ricevo l'errore
Server: Msg 209, Level 16, State 1, Line 1 Ambiguous column name 'Sap product code'. Server: Msg 209, Level 16, State 1, Line 1 Ambiguous column name 'Sap product code'. Server: Msg 209, Level 16, State 1, Line 1 Ambiguous column name 'Sap product code'. Server: Msg 209, Level 16, State 1, Line 1 Ambiguous column name 'Sap product code'.

speedx Profilo | Junior Member

L'errore è qui credo
SUM dbo.Vp.Sale quantity UMB

se SUM è una funzione come penso devi mettere le parentesi e sistemare qualcos'altro...
SUM (dbo.Vp.[Sale quantity]) AS UMB

prova un po'
//// Marcello C.

lbenaglia Profilo | Guru

>SELECT Vp.[Sap Product code], Vp.[Sale date], Vp.[Sale quantity
>UMB], SUM (Vp.[Sale quantity UMB])
>FROM Vp INNER JOIN
>somma ON Vp.[Sap Product code]=somma.[Sap Product code]
>WHERE [Sap Product code] IN ('16662','16661','16663','16664','17189','17190','17191','17192','17802','17803','17804','17805')
>
>GROUP BY [Sap Product code], [Sale date], [Sale quantity UMB]
>HAVING ([Sale date] LIKE '= 102009%')
>ORDER BY [Sale date]

Dalla WHERE in poi specifica la tabella di appartenenza delle colonne.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

FrancescoGuadagno Profilo | Senior Member

Vp.[Sap Product code] o somma.[Sap Product code]?

devi aggiungere i nomi delle tabelle per i nomi di colonna ambigui

franziskus Profilo | Newbie

si infatti

franziskus Profilo | Newbie

Grazie

franziskus Profilo | Newbie

scusate, ora sono riuscito ad arrivare ad una query standard:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ora avrei bisogno che l'INSERT dei dati sulla MIT_Vp venga effettuato ogni giorno(prendendoli dalla tabella Vp).
IN questo modo eseguita la query ogni giorno viene fatto un insert doppio, quindi mi ritrovo lo stesso record inserito più volte.
COme faccio a far sì che l'istruzione INSERT aggiorni, nella tabella MIT_Vp, solo i nuovi record del giorno immessi nella tabella Vp?

thanks

speedx Profilo | Junior Member

fai una left outer join sulle chiavi della tabelle in modo da prendere solo le nuove righe non presenti
//// Marcello C.

franziskus Profilo | Newbie

solo che per eseguire il raggruppamento dei dati prima passano tramite la tabella somma.
Così non posso fare il confronto in base alle chiavi delle tabelle.

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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5