Asp.net 根据条件计算两个电池

Asp.net 根据条件计算两个电池,asp.net,sql-server,tsql,Asp.net,Sql Server,Tsql,我有一个asp.net项目,代码为C#。 我有一张这样的桌子 NAME WORK_TYPE FM FM_HOUR ------------------------------------------------- Mike IN -2800 Mike OUT 3400 ?? Jane IN

我有一个asp.net项目,代码为C#。 我有一张这样的桌子

NAME       WORK_TYPE        FM            FM_HOUR
-------------------------------------------------
Mike         IN            -2800                
Mike         OUT            3400             ??
Jane         IN              400
Jane         OUT            -100             ??
这里我有一个这样的问题;我需要计算这两个单元格的加法,然后将其除以60,然后将其写入正确的单元格

比如,;我需要计算Mike FM IN和Mike FM OUT的加法,并将其写入Mike FM_HOUR cell

我该怎么做

我写了这段代码,但它当然不起作用,只是为了帮助你

SqlConnection conn;
    SqlCommand cmd = new SqlCommand();
    string strSQL = "UPDATE bilgiler3 SET FM_HOUR= SELECT SUM((FM WHERE WORK_TYPE='OUT') + (FM WHERE WORK_TYPE='IN')) / 60 "
    string bag_str = WebConfigurationManager.ConnectionStrings["asgdb01ConnectionString"].ConnectionString;
    conn = new SqlConnection(bag_str);
    conn.Open();...... and goes like this
请等你的帮助。 我真的需要这么做


非常感谢。

这将产生所需的输出:

UPDATE bilgiler3 SET FM_HOUR= T.Result
FROM (
  SELECT Name , SUM(FM) / 60 AS Result
  FROM bilgiler3
  GROUP BY Name
) T
INNER JOIN bilgiler3 ON T.Name = bilgiler3.Name
WHERE bilgiler3.Work_Type = 'OUT'
下面是使用函数上方的
sum()进行选择的示例。我认为它支持SQLServer2005及以上版本

我认为最好在存储过程中执行此操作,而不是内联sql

对于
更新

对于
选择


除了
NAME
WORK\u TYPE
FM
FM\u HOUR
,是否还有其他列?同一用户是否有多组输入/输出行?当只有in(或out)时会怎样?在您的
update
示例中,
join
将为每个名称返回多行。因此,您的更新可能会将一行更新多次。谢谢您的回答。Bu(按名称划分)这一边是什么?我应该在那里写什么呢?那是在求和之前按列[name]划分记录。[name]是给定表中列的名称
update T1 set T1.fm_hour = T2.fm_hour
from T T1 join (Select distinct name,sum(fm) over (partition by name)/60 fm_hour
                from T) T2 on T1.name = T2.name
where T1.work_type = 'out'
Select name,work_type,fm, 
       case work_type 
           when 'out' then sum(fm) over (partition by name)/60
           else null end fm_hour
from yourTable

| NAME | WORK_TYPE |    FM | FM_HOUR |
--------------------------------------
| Jane |        IN |   400 |  (null) |
| Jane |       OUT |  -100 |       5 |
| Mike |        IN | -2800 |  (null) |
| Mike |       OUT |  3400 |      10 |