Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Very complicated SQL
Message
 
À
15/02/2014 13:02:20
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Syntaxe SQL
Versions des environnements
SQL Server:
SQL Server 2008
Application:
Web
Divers
Thread ID:
01594412
Message ID:
01594419
Vues:
50
Table InvoiceDetail has not single field primary key?

MartinaJ

>I have this for now but there is surely a way to simply this:
>
>
>IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
> DROP TABLE #Temp
>
>SELECT InvoiceDetail.NoInvoice,InvoiceDetail.Numero
> INTO #Temp
> FROM
> (SELECT MAX(InvoiceDetail.Numero) AS InvoiceDetailNumero
> FROM Invoice
> INNER JOIN InvoiceDetail ON Invoice.Numero=InvoiceDetail.NoInvoice
> WHERE Invoice.NoCompany=32
> GROUP BY InvoiceDetail.NoInvoice) Invoice2
> INNER JOIN InvoiceDetail ON Invoice2.InvoiceDetailNumero=InvoiceDetail.Numero
> WHERE InvoiceDetail.NoStatus=7 AND InvoiceDetail.AddUser=1
>
>DECLARE @NoInvoice INT
>DECLARE @NoStatus INT
>DECLARE @Numero INT
>
>WHILE (SELECT COUNT(*) FROM #Temp)>0
>BEGIN
>
>   SELECT TOP 1 @Numero=Numero,@NoInvoice=NoInvoice FROM #Temp
>
>   IF OBJECT_ID('tempdb..#Temp2') IS NOT NULL
>    DROP TABLE #Temp2
> 
>    SELECT TOP 1 InvoiceDetail.Numero AS InvoiceDetailNumero,InvoiceDetail.NoStatus
>    INTO #Temp2
>    FROM InvoiceDetail
>    WHERE InvoiceDetail.NoInvoice=@NoInvoice AND InvoiceDetail.NoStatus<>7
>    ORDER BY InvoiceDetail.NoInvoice
>
>   SELECT @NoStatus=NoStatus FROM #Temp2
>
>   IF (@NoStatus=3)
>   BEGIN
>      
>      DELETE FROM InvoiceDetail WHERE Numero=@Numero
>
>      UPDATE Invoice SET NoStatus=3 WHERE Numero=@NoInvoice
>
>   END
>
>   DROP TABLE #Temp2
>
>   DELETE FROM #Temp WHERE Numero=@Numero
>END
>
>DROP TABLE #Temp
>
"Navision is evil that needs to be erazed... to the ground"

Jabber: gorila@dione.zcu.cz
Jabber? Jabbim
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform