Asp.net 根据条件计算两个电池
我有一个asp.net项目,代码为C#。 我有一张这样的桌子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
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 |