Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Very complicated SQL
Message
 
To
15/02/2014 13:02:20
General information
Forum:
Microsoft SQL Server
Category:
SQL syntax
Environment versions
SQL Server:
SQL Server 2008
Application:
Web
Miscellaneous
Thread ID:
01594412
Message ID:
01594419
Views:
49
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
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform