【发布时间】:2013-01-04 00:34:38
【问题描述】:
我有一个 asp.net 项目,在这个项目上,
我需要根据其他 2 列的值更新我的列。 我的桌子的结构看起来;
ID - 姓名 - GK - PG - GK+PG
1 - mike - 1 - 1 [这里的sql应该写540,但情况写180]
2 - john - 2 - 1 [这里的sql应该写1080,但写的是180]
3 - sue - 1 - 2 [这里的sql应该写1080,但是case写的是180]
这是它的 .cs 代码。
string strSQL = "UPDATE [info] SET
[GK_PG] = (CASE
WHEN ([GK]='1') THEN '180'
WHEN ([PG]='1') THEN '180'
WHEN ([GK]='2') THEN '540'
WHEN ([PG]='2') THEN '540'
WHEN ([GK]='3') THEN '1080'
WHEN ([PG]='3') THEN '1080'
WHEN ([GK]='1' AND [PG]='1') THEN '540'
WHEN ([GK]='2' AND [PG]='1') THEN '1080'
WHEN ([GK]='1' AND [PG]='2') THEN '1080'
ELSE 0
END)
WHERE [DATE] BETWEEN @DATE1 AND @DATE1 AND WORK_TYPE='IN'";
这段代码只写了我的[GK_PG]列'180',它不寻找其他状态。
等待您的答复。
谢谢。
【问题讨论】:
-
如果所有行都有
[GK]='1'或[PG]='1',这是预期的。在这种情况下,将不检查第 3 个及以下条件。 -
我需要检查一下,我的朋友我该怎么做?
-
先检查 AND 条件,然后使用 OR。
-
CASE表达式检查每个条件,直到找到一个真正的条件,然后停止。向我们展示一个更新错误的示例行。 -
所以,我不能让那个 sql 检查其他条件?
标签: asp.net sql-server-2008 sql-update case