Avatar billede hundevennen Nybegynder
12. november 2013 - 07:29 Der er 1 kommentar og
1 løsning

Sql forespørgsels problem

I et forsøg på at trække data ud af min sqlbase og vise et akkumuleret Bar Chart bruger jeg denne sætning

SELECT count (kode) as antal, datepart(MM, dato) as maaned, datepart (yyyy, dato) as aar  into #test from T_produktion2013
Where datepart(yyyy, dato) = 2013 and kode IN (73241, 73251, 73252,73261,76319,76329) group by datepart(MM, dato), datepart(yyyy, dato)
select A.[maaned]from #test A group by A.[maaned] select (select sum(antal) from #test B where B.[maaned]< = A.[maaned] )
as [antal], A.[maaned], A.[aar] from #test A group by A.[maaned],A.[aar]

Når jeg kører sætningen i query analyseren via Interprise manager
virker det fint.
Når jeg via interprise manager går ind i databasen ogvælger Tables - højreklikker på tabellen og vælger open table - Query og indsætter sætningen der får jeg en fejl.

Error in list of function arguments: 'SELECT' not recognized. Unable to parse query text.

Det medfører at der ikke kommer nogen data i resultat 'pane'

Når sqlsætningen bliver brugt på vores intranet og resultatet skal vises via et Jscript kommer der ikke nogen data til at vise det akkumulererede bar chart.

Det kan jo selvfølgelig være .NET programmeringen, den er gal med, men en anden og lidt nemmere sqlsætning viser fint et bar chart hvor data bare er fordelt på måned og ikke akkumuleret
Avatar billede hrc Mester
14. november 2013 - 13:52 #1
Jeg har lige prøvet at smukkesere det lidt, for præsentationen er forvirrende. Du kører det i én session pga. den temporære tabel, men har 2 selects efter du bygger arbejdsdata, ikke? I .NET kan man da ikke hente data fra to queries på en gang, eller kan man?

Er det ikke det her du mangler:

SELECT count (kode) as antal
    , datepart(MM, dato) as maaned
into #test
from T_produktion2013
where dato between '20130101' and '20131231'
  and kode IN (73241,73251,73252,73261,76319,76329)
group by datepart(MM, dato), datepart(yyyy, dato)

select (select sum(B.antal)
        from #test B
        where B.[maaned] <= A.[maaned]) as [antal]
    , A.[maaned]
from #test A
group by A.[maaned]
Avatar billede hrc Mester
14. november 2013 - 14:24 #2
Tror nemt du kan skippe den temporære tabel helt og holde det i et simpelt script.
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