Avatar billede dm013 Nybegynder
18. december 2003 - 19:08 Der er 4 kommentarer og
1 løsning

Select problem!

Hvorledes får jeg nedenstående stored procedure til at indsætte den post med den højeste værdi i feltet ValidFrom, men som samtidig er <= Parametret?


SELECT    dbo.TblVareNummer.Varenummer, dbo.TblProdukter.Produktnavn, dbo.TblProdukter.halvfabrikata, dbo.TblProdukter.Kategori,
                      dbo.TblProdukter.ValleNorm, dbo.TblProdukter.FedtNorm, dbo.TblProdukter.ProteinNorm, dbo.TblProdukter.Lønnorm, dbo.TblProdukter.ProduktType,
                      dbo.TblProdukter.secundakl2vnr, dbo.TblProdukter.secundakl2proc, dbo.TblProdukter.secundakl3vnr, dbo.TblProdukter.secundakl3proc,
                      dbo.TblProdukter.Secunda, dbo.TblProdukter.secundaproc, dbo.TblProdukter.prima, dbo.TblProdukter.Oprettetdato, dbo.TblProdukter.ValidFrom

into #Temp1
FROM        dbo.TblProdukter INNER JOIN
                      dbo.TblVareNummer ON dbo.TblProdukter.Varenummer = dbo.TblVareNummer.Varenummer AND dbo.TblProdukter.ValidFrom IN
                          (SELECT    MAX(t.validfrom)
                            FROM          tblprodukter t
                            WHERE      t.varenummer = tblvarenummer.varenummer)
WHERE    (dbo.TblProdukter.ValidFrom <= @validfrom)
!!!dm013
Avatar billede unicron Nybegynder
18. december 2003 - 19:56 #1
Hvad med dette:
Create Procedure spVareGeting (@validfrom as int)
As

Declare @VareNo Varchar(50)

--Create #Temp blablabla -- en temp tbl

Declare CursorFetter Cursor For ( Select VareNo From TblVareno) -- Nu har alle vareNo
Open CursorFetter

Fetch Next From CursorFetter into @VareNo

While @@Fetch_status = 0
Begin

Select nogle_ting
Into #Temp
From tblProdukter
Where VareNo = @VareNo
And validfrom <= @validfrom


End
Close CursorFetter
Deallocate CursorFetter

Go
Avatar billede trer Nybegynder
18. december 2003 - 23:45 #2
hvis du har tabellen mytable defineret så kolonnerne matcher - så kan du blot gøre således:

insert into mytable (
Varenummer, Produktnavn, halvfabrikata, Kategori,
ValleNorm, FedtNorm, ProteinNorm, Lønnorm,
ProduktType, secundakl2vnr, secundakl2proc,
secundakl3vnr, secundakl3proc,
Secunda, secundaproc,
prima, Oprettetdato, ValidFrom)
SELECT    dbo.TblVareNummer.Varenummer, dbo.TblProdukter.Produktnavn, dbo.TblProdukter.halvfabrikata, dbo.TblProdukter.Kategori,
                      dbo.TblProdukter.ValleNorm, dbo.TblProdukter.FedtNorm, dbo.TblProdukter.ProteinNorm, dbo.TblProdukter.Lønnorm, dbo.TblProdukter.ProduktType,
                      dbo.TblProdukter.secundakl2vnr, dbo.TblProdukter.secundakl2proc, dbo.TblProdukter.secundakl3vnr, dbo.TblProdukter.secundakl3proc,
                      dbo.TblProdukter.Secunda, dbo.TblProdukter.secundaproc, dbo.TblProdukter.prima, dbo.TblProdukter.Oprettetdato, dbo.TblProdukter.ValidFrom
FROM        dbo.TblProdukter INNER JOIN
                      dbo.TblVareNummer ON dbo.TblProdukter.Varenummer = dbo.TblVareNummer.Varenummer AND dbo.TblProdukter.ValidFrom IN
                          (SELECT    MAX(t.validfrom)
                            FROM          tblprodukter t
                            WHERE      t.varenummer = tblvarenummer.varenummer)
WHERE    (dbo.TblProdukter.ValidFrom <= @validfrom)
Avatar billede trer Nybegynder
18. december 2003 - 23:46 #3
Nb: I cursor-eksemplet ovenfor manger en fetch i looped - det vil aldrig slutte...
Avatar billede dm013 Nybegynder
20. december 2003 - 13:33 #4
Fandt løsningen ved unicron's hjælp,
smider du et svar unicron?
Avatar billede dm013 Nybegynder
13. januar 2004 - 19:50 #5
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester