我在Windows窗体中有一个基于以下查询的datagridview:
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查询中执行此操作,或者如何执行该programmaticaly ??
答案 0 :(得分:1)
您可以这种方式获得此值,
SELECT (4*60 + 140) / 60 as hours, (4*60 + 140) % 60 as minutes
您可以选择附加它并显示为文本,或者通过代码将其作为属性处理,因为您将定义其他字段。
答案 1 :(得分:1)
返回多行的行转换...
(我徒手打字,所以你可能需要做一些语法更新)
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
答案 2 :(得分:0)
您可以将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
我认为这将解决问题请检查