Query van weeknummers in kolommen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Scheepers.A
  • Registratie: Februari 2019
  • Laatst online: 16-03-2022
A.d.h.v. het ingegeven aantal weken wil ik een overzicht met de weeknummers als kolommen waarin de paraaf komt te staan.
Van de huidige week terug naar het ingegeven aantal weken.

Ik gebruik Microsoft SQL server management en dit moet een Stored Procedure worden die ik aanroep met C#.

Onderstaande query heb ik al en deze werkt, maar het aantal weken([18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33]) moet een variabele worden.

Wie helpt mij?

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT Taak,[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33]
FROM      
(select T.Taak, datepart(isowk,R.datum) as [week], R.Paraaf
    FROM [Logboeken].[dbo].[tblTaken] T 
INNER JOIN Werkzaamheden W ON (W.ID = T.Werkzaamheden)
INNER JOIN Werkplek P ON (P.ID = T.Werkplek)
LEFT  JOIN Registratie R ON (R.Taak = T.Taak AND R.Werkzaamheden = W.Werkzaamheden) 
WHERE (T.Taak IS NOT NULL) AND T.Werkplek = + @Labnr AND W.Keus = + @Keus) as Overzicht
pivot
(
MAX([Paraaf])  for week  IN ([18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33])   
) as PivotTable
...

[ Voor 0% gewijzigd door RobIII op 09-08-2021 10:27 . Reden: Code tags toegevoegd ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit is een beetje een Kan iemand even...?. We verwachten. per onze Quickstart, wel een beetje eigen inzet te zien. Wat heb je zelf al gezocht, gevonden, geprobeerd etc. Dus ik zou graag zien dat je je topicstart m.b.v. de "wijzig" link even aanpast en aanvult met die informatie. Veder wanneer je code post, gebruik dan
code tags a.u.b :)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Scheepers.A
  • Registratie: Februari 2019
  • Laatst online: 16-03-2022
De query die ik tot nu toe heb gemaakt ben ik weken mee bezig geweest m.b.v.. het internet. Het werkt, maar waar ik hulp bij nodig heb is de weeknummering.
Dus inzet voldoende. Graag hulp bij het laatste gedeelte waardoor de query verbetert.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Scheepers.A schreef op maandag 9 augustus 2021 @ 14:28:
Dus inzet voldoende. Graag hulp bij het laatste gedeelte waardoor de query verbetert.
Die inzet zal er best zijn, en dat geloof ik best, maar we vragen je die inzet te tonen om te voorkomen dat we onze tijd gaan zitten verdoen met dingen aandragen die je al geprobeerd hebt. We vragen dat niet omdat je minimaal X uur zelf gepuzzeld moet hebben of omdat we je anders niet willen helpen. We vragen het om zo te voorkomen dat we straks komen met "probeer dit eens" waarop jij dan antwoordt "al gedaan" "nou, probeer dat dan eens" "al gedaan" en dus jouw én onze kostbare tijd zitten verdoen.

Als je doelt op 't feit dat je die query die je nu toont de vruchten zijn van je weken werk: prima, maar je hebt nu dus een "nieuw" (deel) probleem. Het mag voor zich spreken dat we dáár op doelen als we vragen te laten zien wat je al geprobeerd hebt om het probleem op te lossen ;) En dan "tellen die weken dus niet mee", je topic gaat immers om je laatste ("nieuwe" (deel) probleem) en wat je dáár dan voor hebt ondernomen op 't op te lossen.

[ Voor 8% gewijzigd door RobIII op 09-08-2021 14:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • RedFox
  • Registratie: November 2001
  • Laatst online: 20:17

RedFox

Heb je een OV ofzo?

Je geeft nu toch ook al de variabelen `Labnr` en `Keus` door? Hetzelfde kan je doen met de weeknummers. Afhankelijk van je ORM (als je die gebruikt) zal je alleen even de weeknummers op dezelfde manier moeten formatteren als nu in je query.

You are not special. You are not a beautiful or unique snowflake. You're the same decaying organic matter as everything else.


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Volgens mij zit je met een aantal uitdagingen: (1) ophalen van de data, (2) presenteren van de data.

M.b.t. het ophalen van de data, wat wil je precies tonen? Welke range en hoe kom je hier aan? Als we het over weeknummers hebben, dan zullen we het vast en zeker ook over datum's hebben. Dus je zult uit je database items moeten halen die binnen een bepaalde datum range liggen. Volgens mij moet je even weten welke datums en dan BETWEEN toepassen.

M.b.t. het presenteren van de data, hoe wil je dat doen? Wat heb je hiervoor al gedaan? Weeknummers in de kolommen is puur een presentatie feestje, dus daar zul je dit probleem ook moeten tackelen. Misschien kan de aanleverende partij nog de datum's transformeren naar weeknummers, zodat de presentatie laag direct aan de gang kan gaan. Uit je vraag heb ik het idee dat dit al wordt opgelost of niet?

Dus als het puur op de query aankomt, dan zou ik zeggen. Tussen welke datum range moet je de data ophalen en hoe kom je aan deze datums? En hoe vertaal je een datum naar weeknummer. Maar uit je vraag zit je nog met je weeknummering en ik haal niet helemaal uit je verhaal waar je nu precies nog mee zit.

Acties:
  • 0 Henk 'm!

  • Scheepers.A
  • Registratie: Februari 2019
  • Laatst online: 16-03-2022
De gebruiker geeft aan hoeveel weken terug vanaf huidige datum teruggekeken moet worden.
Bijvoorbeeld 10 weken terug. Gebruiker geeft 10 aan.
In de query staat 'datepart(isowk,R.datum) as [week]' en volgens mij wordt dan het weeknummer van R.datum opgehaald.
Ik wil de range van de weeknummers oplossen in de query en niet in de code.
Volgens mij kan dit met een functie stuff, maar ik krijg het niet voor elkaar met weeknummers.
De kolommen moeten weeknummers worden en dat zijn integers

[ Voor 7% gewijzigd door Scheepers.A op 11-08-2021 09:52 ]


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Kun je het niet oplossen door in de query te zeggen
code:
1
SELECT * FROM Table WHERE datepart(isowk, R.datum) BETWEEN :laag AND :hoog


Ik weet even niet hoe je die parameters moet fixen, of dat je @laag en @hoog moet toepassen. Maar de datepart functie geeft een getal in en dan kun je daar mee rekenen. Echter nu ik dit typ bedenk ik mij dat je een probleem krijgt met weeknummers als december en januari, omdat je dan van 50 naar 1,2,3 gaat. En dan BETWEEN een probleem wordt.

Misschien is een datum bepaling toch makkelijker, dat je vooraf defineert wat de startdatum en einddatum van je range is en dan kan zeggen:
code:
1
WHERE R.datum BETWEEN :startdatum AND :einddatum

Week nummers kun je nog als parameter uit de query meenemen en in de presentatie tonen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
4Real schreef op woensdag 11 augustus 2021 @ 09:25:
Kun je het niet oplossen door in de query te zeggen
code:
1
SELECT * FROM Table WHERE datepart(isowk, R.datum) BETWEEN :laag AND :hoog
Dat is alleen niet wat TS wil; die wil per week een field ("kolom"). En, ja, dat kan als je je in wat bochten wringt en bijvoorbeeld kijkt naar PIVOT maar onder de streep zou ik de "drang" om 't in een query op te lossen laten varen en 't, inderdaad, in de presentatielaag oplossen - wat een veel geschiktere plek is voor dat soort dingen.

Verder had ik @Scheepers.A verzocht de TS aan te vullen met wat er geprobeerd, gezocht, gevonden etc. en, vind ik zelf, toch aardig onderbouwd waarom toen daar om gevraagd werd. Ik vind het dan best flauw dat maar gewoon straal te negeren en door te gaan alsof dat nooit gezegd is. Ik zou dan, alsnog, graag zien dat TS daarmee aangevuld wordt per onze eerder genoemde Quickstart.

Overigens is dit topic een herhaling van stappen; ook dáár werd al aangeraden het op te lossen in de presentatielaag, kwam pivot al voorbij en werd er gewezen op code tags.

[ Voor 12% gewijzigd door RobIII op 11-08-2021 09:50 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1