21. august 2014 - 20:37 Der er 7 kommentarer og
2 løsninger

Select * from Select eller alternativ...

Hejsa

Jeg bøvler lidt med en select...

Det jeg skal have er den højeste test dato på alle der ikke er blevet testet inden for det seneste år...

Nedenstående virker og giver mig max på alle, og giver mig alle de største test resultater (måske skal NOT IS NULL fjernes, men ellers)

Mit problem er nu at kun at få dem hvor der ingen test har haft indenfor det seneste år. En dato i where viser så blot næstsidste testdato for dem med flere tests... og det var jo ikke meningen...

Derfor tænkte jeg, at hvis jeg kunne lave en Select på den select jeg har her, så kunne jeg putte where testdato<= -et år

SELECT tblTests.Id, tblTests.UserId, tlbUsersId.FullName, MAX(tblTests.TestDate) as TestDate, tblTests.TestResult, tblTests.Status
FROM tblTests INNER JOIN tblUsers on tlbUsersId
WHERE (tblTests.Status = 'Active') AND (NOT (tblTests.TestResult IS NULL))
GROUP By tblTests.Id, tblTests.UserId, tlbUsersId.FullName, tblTests.TestResult, tblTests.Status
Avatar billede arne_v Ekspert
21. august 2014 - 20:47 #1
SELECT *
FROM (SELECT ...) x
WHERE ...
21. august 2014 - 20:51 #2
Jeg har prøvet at sætte parentes omkring ovensteånde og have en Select * (Select.......) WHERE TestDate <= '2013-08-21'
Men den kommer med fejl på Where...
Avatar billede Slettet bruger
21. august 2014 - 20:56 #3
I dit oprindelige select kan du skrive
Having MAX(tblTests.TestDate) <= '2013-08-21'
efter group by
Avatar billede arne_v Ekspert
21. august 2014 - 20:56 #4
har du husket x'et?

:-)
21. august 2014 - 21:02 #5
Tak, det var jo et vigtigt lille X... :-)

Havde forsøgt INSERT INTO tempTable... men der virker ikke i  Windows Azure sql...

Fandt dette lille eksempel, som jeg også kan få til at virke...
CREATE TABLE #itemSearch (ITEMNR INT, USERNR INT, IT.ShopNR INT, IT.ITEMID INT)
INSERT INTO #itemSearch
SELECT IT.ITEMNR, IT.USERNR, IT.ShopNR ,IT.ITEMID                 
FROM dbo.ITEM AS IT


Smid et svar, så du kan få point for dit X :-)
Avatar billede arne_v Ekspert
21. august 2014 - 21:05 #6
x er alias navnet for den select saaledes at du hvis du joiner med andre tabeller kan referere til x.feltnavn.

Temporaere tabeller kan vaere dyre performance maessigt.

Hvis du kan loese dit problem med en HAVING, saa er det formentligt allerbedst.

Og et svar.
21. august 2014 - 21:07 #7
rahp - det over så jeg lige - det er f... smart, smid også et svar - den løsning kan jeg bedst lide rent teknisk :java script: void(0);-)
Avatar billede Slettet bruger
21. august 2014 - 21:10 #8
Svar ;-)
21. august 2014 - 21:15 #9
Tak for super hurtig og kyndig assistance :-)
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

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