【问题标题】:Update Columns with Using Case使用大小写更新列
【发布时间】: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


【解决方案1】:

我已经通过将 GK 和 PG 情况分成 2 个不同的按钮点击事件来解决这个问题。

还是谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2013-11-07
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多