[MS-SQL] Kolom met tijdregistratie opdelen naar uren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Gizzy
  • Registratie: September 2002
  • Laatst online: 11-08 07:34
Ik ben bezig met het verrijken van een database van waarin telefoontjes worden geregistreerd. Nou zou ik graag de telefoontjes die gedurende de dag binnenkomen, opdelen naar uren in zogenaamde Tijdslots. Even kort een voorbeeld:

EINDTIJD Tijdslot
11:59:56 11 tot 12
11:59:58 11 tot 12
12:01:10 12 tot 13
12:03:10 12 tot 13
13:01:01 13 tot 14

Ik gebruik Microsoft SQL Server Management Studio. Momenteel beschik ik dus alleen over de meest linker kolom en de Tijdslot kolom zou ik graag genereren met een query. Nu heb ik wel al selecties voor elk tijdslot gemaakt (zijn allemaal losse views), maar gezien het feit dat ik nogal nieuw ben wat betreft SQL, mis ik een beetje de juiste gedachtengang om deze queries te combineren en die extra kolom te generen door middel van 1 uitgebreidere query.

Hier even een voorbeeld van de relatief simpele querie die voor de views heb gebruikt:

SELECT EINDTIJD (+nog een x aantal kolommen),
FROM dbo.Tefoontjes
WHERE (EINDTIJD BETWEEN '13:00:00' AND '14:00:00')

Resultaat zou hier 1 record zijn (uitgaande van bovenstaande voorbeeld)

Het streven is uiteindelijk om één view te maken, gebasseerd op 1 querie. Deze views wil ik dan uitlezen met excel en daar een draaitabel van maken.

flickr - WOT Profile - Game PC


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 11:42
Het tijdslot is toch gewoon HOUR(tijdsregistratie) en HOUR(tijdsregistratie)+1? Daar hoef je toch geen view voor te maken?

Acties:
  • 0 Henk 'm!

  • Gizzy
  • Registratie: September 2002
  • Laatst online: 11-08 07:34
Voor mij is dat niet zo "Gewoon" nog. Ik ben nog niet zo op de hoogte van alle ingebakken SQL Statements. Zal eens even kijken of ik het met Hour gefixed krijg.

flickr - WOT Profile - Game PC


Acties:
  • 0 Henk 'm!

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 06:47
Je wilt gewoon iets afleiden dus 1 query is genoeg hier.

SQL:
1
2
3
4
5
select 
EINDTIJD,
HOUR(EINDTIJD) as Tijdslot_start,
HOUR(EINDTIJD) +1 as Tijdslot_End
From Tabelletje

De rest vind je wel mbv de F1 knop gok ik zo

Acties:
  • 0 Henk 'm!

  • Gizzy
  • Registratie: September 2002
  • Laatst online: 11-08 07:34
K, ga ik hier ook weer mee verder knutselen. Laat wel even weten wat het is geworden.

Updatem:
He Haaitje. Dat was precies wat ik nodig had. Ik ga alleen de End kolom die je toevoegde niet bijvoegen. Het tijdslot wat wordt aangemaakt geldt al voor de hele periode van 1 uur. Dat was de bedoeling van mijn between statement. Nu moet ik alleen nog even besluiten wat ik met de null-values ga doen die ik terugkrijg. Ja heel eigenaardig, binnengekomen telefoontjes hebben wel een start maar geen einddatum (beetje weird niet), maar daar moet ik ook even met andere mensen over hebben.

Exacte code die hier in Management Studio tevoorschijn komt, bij View Design is de volgende:

SELECT TOP (100) PERCENT [Hele lijst aan kolomnamen], EINDTIJD,
{ fn HOUR(EINDTIJD) } AS Tijdslot_EIND
FROM dbo.Tabelletje
ORDER BY TIJDSLOT_EIND

[Noobmode on] Wist niet dat het zo makkelijk was om een kolom bij te "maken" door alleen het statement AS te gebruiken. [/Noobmode].

[ Voor 84% gewijzigd door Gizzy op 19-10-2009 10:43 . Reden: Antwoord gevonden, reply statement ]

flickr - WOT Profile - Game PC


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Sinds wanneer kent MySQL de functie TOP() ? Ik meende dat dit iets is van SQL Server.

En over de noobmode, AS gebruik je om een alias te maken. Dat werkt niet alleen voor kolommen, ook voor tabellen e.d.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
cariolive23 schreef op maandag 19 oktober 2009 @ 13:04:
Sinds wanneer kent MySQL de functie TOP() ? Ik meende dat dit iets is van SQL Server.

En over de noobmode, AS gebruik je om een alias te maken. Dat werkt niet alleen voor kolommen, ook voor tabellen e.d.
In tegenstelling tot wat de titel van het topic zegt gaat het volgens mij om MS SQL Server
Gizzy schreef op maandag 19 oktober 2009 @ 10:00:
Ik gebruik Microsoft SQL Server Management Studio.
Ik pas het even aan in de titel

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
cariolive23 schreef op maandag 19 oktober 2009 @ 13:04:
Sinds wanneer kent MySQL de functie TOP() ? Ik meende dat dit iets is van SQL Server.
Ik gebruik Microsoft SQL Server Management Studio
;)

Daarnaast ben ik erg benieuwd wat de functie HOUR retourneert. Welke versie van SQL Server, want daar gaat het volgens mij om, gebruik je? Alles < 2008 ondersteunt helemaal geen tijd datatype.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
P_de_B schreef op maandag 19 oktober 2009 @ 13:09:
[...]


[...]

;)

Daarnaast ben ik erg benieuwd wat de functie HOUR retourneert. Welke versie van SQL Server, want daar gaat het volgens mij om, gebruik je? Alles < 2008 ondersteunt helemaal geen tijd datatype.
HOUR geeft gewoon de uren uit een (date)time terug :?
Euh... wacht effe :P

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!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
RobIII schreef op maandag 19 oktober 2009 @ 13:23:
[...]

HOUR geeft gewoon de uren uit een (date)time terug :?
SQL:
1
select HOUR(getdate())


code:
1
2
Msg 195, Level 15, State 10, Line 1
'hour' is not a recognized built-in function name.

:?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ja, ik bedacht zojuist dat ik misschien beter even kon dubbelchecken voor ik begon te roepen :P Ik zou zweren dat 'ie er al sinds SQL 7 of SQL 2000 in zat. :X Je zult DatePart moeten gebruiken dus :)

[ Voor 25% gewijzigd door RobIII op 19-10-2009 13:27 ]

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!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
:>

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Ik weet niet hoe je het uur deel in MS -SQL deel eruit haalt (iets met datepart zie iin in de eerste search die ik doe).

maar als je dat hele uur in een group by zet dan groepeer je calls per uur he?

Select max (t.time), count(t.time) ,datapart('hh',t.time) Slot
from telefoontjes t.
group by datapart('hh',t.time)

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Gizzy
  • Registratie: September 2002
  • Laatst online: 11-08 07:34
Inderdaad dan groepeer je calls per uur. Het betreft inderdaad MySQL Server, en ik heb inderdaad ook gelezen dat Hour pas vanaf een bepaalde versie aanwezig is. (kan ook met google even niet terugvinden vanaf welke versie.)

flickr - WOT Profile - Game PC


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Gizzy schreef op maandag 19 oktober 2009 @ 14:52:
Het betreft inderdaad MySQL Server
Waar hebben we het nu over? MySQL of SQL Server? Dat zijn twee totaal verschillende producten van totaal verschillende fabrikanten. De ene is van MySQL AB (SUN / Oracle) de andere van Microsoft.

De query met TOP() lijkt te duiden op SQL Server, maar nu roep je weer iets over MySQL, daar zal TOP echt niet gaan werken.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
cariolive23 schreef op maandag 19 oktober 2009 @ 16:06:
[...]

Waar hebben we het nu over? MySQL of SQL Server?
Hij heeft het over 'zijn SQL Server' (My SQL Server) :P

https://fgheysels.github.io/

Pagina: 1