пересчитать поле из datagridview - PullRequest
1 голос
/ 15 ноября 2011

У меня есть сетка данных в форме окна, основанная на следующем запросе:

select dbo.doss.behdr, dbo.doss.dosno, SUM(dbo.kbpres.uur) as SomUur, SUM(dbo.kbpres.minuut) as SomMinuut 
FROM dbo.kbpres INNER JOIN dbo.doss ON dbo.kbpres.ino = dbo.doss.ino 
WHERE (dbo.doss.behdr LIKE @cboBeheerder) 
GROUP BY dbo.doss.behdr, dbo.doss.dosno

Теперь поля uur и minuut являются просто целыми числами.Так что может случиться, что uur = 4 и minuut = 140.Теперь я хотел бы, чтобы это было в дополнительном столбце, где указано 6:20:00, что составляет 4 часа плюс 140 минут (2 часа 20 минут).

Могу ли я сделать это в SQL-запросе или как это сделать программно??

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Преобразование строк для нескольких возвращаемых строк ...

(я набрал это от руки, поэтому вам может потребоваться обновить синтаксис)

select 
   dbo.doss.behdr
,  dbo.doss.dosno
,  SUM(dbo.kbpres.uur) as SomUur
,  SUM(dbo.kbpres.minuut) as SomMinuut 
,  CAST ((SUM(dbo.kbpres.uur) + SUM(dbo.kbpres.minuut) / 60) AS Varchar(2)) + -- derives hour
   ':' + -- adds the ':'
   CAST ((SUM(dbo.kbpres.minuut) % 60) AS Varchar(2)) as [derivedColumn] -- derives the minutes

FROM 
   dbo.kbpres 
   INNER JOIN 
   dbo.doss ON dbo.kbpres.ino = dbo.doss.ino 

WHERE 
   (dbo.doss.behdr LIKE @cboBeheerder) 

GROUP BY 
   dbo.doss.behdr, dbo.doss.dosno
1 голос
/ 15 ноября 2011

Вы можете получить это значение таким способом,

SELECT (4*60 + 140) / 60 as hours,  (4*60 + 140) % 60 as minutes

Вы можете добавить его и отобразить как текст, или обработать его как свойство с помощью кода, поскольку у вас будут определены другие поля.

0 голосов
/ 15 ноября 2011

Вы можете сохранить значения uur и minuut в переменной. Затем получите их.

declare @hr int
declare @mint int
set @hr = SUM(dbo.kbpres.uur)
set @mint  = SUM(dbo.kbpres.minuut)

SELECT (@hr*60 + @mint) / 60 as hours,  (@hr*60 + @mint) % 60 as minutes

Я думаю, что это решит проблему, пожалуйста, проверьте

...