Archief - MS SQL Server bug?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Forum

Legacy Member
Hallo,

Ik heb volgende tabel in MS SQL Server 2008 R2:

Employee ID # Duration
################
00001 # 7,6
00002 # 7,6
00003 # 11,5
.....


Het veld Duration is van het type NUMERIC(28, 12) en stelt gewerkte uren van iemand voor. Ik zou dit willen splitsen in uren en minuten:

select employeeid, floor(duration) as hours, (duration - floor(duration)) * 60 as minutes from tabel.

Maar als ik de som wil nemen van iedereen, klopt het niet meer.

select floor(sum(duration)), (sum(duration) - floor(sum(duration))) * 60 from table.

De minuten zijn altijd 60 of 0 omdat sum(duration) - floor(sum(duration)) altijd 1 of 0 is, terwijl "duration - floor(duration)" wel decimalen na de komma teruggeeft en "sum(duration) - floor(sum(duration))" niet...

Ik weet niet wat ik fout doe.
Iemand enig idee? Alvast bedankt.

KiPpIe

Legacy Member
Probeer eens floor(sum(duration)) terug te casten naar een decimal(28,12), moet volgens mij het probleem wel oplossen

edit: Heb hier nu atm geen test DB beschikbaar, maar zou mij eig verbazen moest mijn uitleg van hierboven werken, aangezien volgens dit uw resultaat toch een decimal zou moeten zijn..

Forum

Legacy Member
Merci, me ne floor(cast(sum(duration) as numeric(28, 12))) lukt het wel...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan