Optellen van BIT velden in SQL

30-07-2012 | Marcel van Langen | SQL Server | BIT, SQL Server, optellen

Stel je hebt een tabel waarbij je via BIT velden gegevens bijhoudt. Het kan voorkomen dat je wilt tellen hoeveel van die BIT velden nu eigenlijk op TRUE zijn gezet. In mijn geval ging het om een SQL database, waarbij per dagdeel werd bijgehouden of er iemand al dan niet aanwezig was. Iedere dag werd verdeeld in 4 dagdelen (ochtend, middag, avond, nacht).

Dat betekende dat de tabel in totaal 28 BIT velden bevatte per medewerker. Een rapport moest per dag per medewerker aangeven hoeveel dagdelen hij die dag aanwezig was. Het was kortom nodig om gegroepeerd de BIT velden die op TRUE waren gezet bij elkaar op te tellen. Maar, hoe doe je dat nu eigenlijk in SQL? Omdat ik dit ook nog niet eerder nodig had gehad, was hiervoor een korte online zoektocht nodig. De sleutel hiervoor is het omzetten van de BIT velden naar INT velden, zodat deze konden worden opgeteld. De oplossing zag er in mijn geval dan ook globaal als volgt uit (voor de overzichtelijkheid heb ik alleen de maandag totalen opgenomen, leesbare veldnamen opgenomen, een specifiek medewerker ID vermeld en de groepering weggelaten):

SELECT
CONVERT(int, maandag_dagdeel_1) +
CONVERT(int,maandag_dagdeel_2) +
CONVERT(int, maandag_dagdeel_3) +
CONVERT(int, maandag_dagdeel_4)
AS maandag_aanwezigheid
FROM aanwezigheid
WHERE medewerker_id = 12

Op deze manier krijg je voor de medewerker met id 12 een getal tussen de 0 en de 4 terug. Dit getal staat voor het aantal dagdelen dat die medewerker op de maandag aanwezig is. Deze query is eenvoudig aan te passen en uit te breiden naar eigen behoefte.

Succes!

Over Morloff

Morloff ontwerpt en realiseert succesvolle webtoepassingen op het gebied van procesoptimalisatie, eCommerce en rapportage door de inzet van moderne webtechnieken, sociale media en zoekmachine optimalisatie.

over ons | diensten | portfolio | contact | route

naar website IJsmonster.nl naar website ICT intermediairs naar website marcelvanlangen.com

Twitter

Morloff

Cuneraweg 169a
3911 RH Rhenen

M +31 (0)6 - 515 96 189
W www.morloff.nl
E contactformulier

Morloff op Twitter Morloff op Facebook Morloff op LinkedIn Morloff via RSS