【问题标题】:Trying to Update a Column in SQL Server 2008 using CASE and a Condition based on another Column Value尝试使用 CASE 和基于另一个列值的条件更新 SQL Server 2008 中的列
【发布时间】:2014-03-06 23:18:35
【问题描述】:

我正在尝试根据其他列中的值更新包含两列的表。我有一个语法错误,现在我有点痛苦。所以我想根据NET_SALES 列中的值更新MONETARY 列,我想根据DLP 列中的值更新RECENCY 列。想法?

UPDATE #CC201403B_CURRENT
 SET MONETARY=CASE 
  WHEN (NET_SALES BETWEEN '75.00' AND '100.00') THEN '75-100'
  WHEN (NET_SALES BETWEEN '100.01' AND '125.00') THEN '100-125'
  WHEN (NET_SALES BETWEEN '125.01' AND '175.00') THEN '125-175'
  WHEN (NET_SALES BETWEEN '175.01' AND '250.00') THEN '175-250'
  ELSE '250+' END,
 SET RECENCY=CASE
  WHEN (DLP BETWEEN '3/1/2013' AND '5/31/2013') THEN 'DLP 10-12'
  WHEN (DLP BETWEEN '6/1/2013' AND '8/31/2013') THEN 'DLP 7-9'
  WHEN (DLP BETWEEN '9/1/2013' AND '11/30/2013') THEN 'DLP 4-6'
  WHEN (DLP BETWEEN '12/1/2013' AND '2/28/2014') THEN 'DLP 0-3' 
  ELSE '' END;

【问题讨论】:

  • 你的语法错误是什么?

标签: sql sql-server sql-server-2008 sql-update case


【解决方案1】:

您的查询中有 2 次关键字 SET,您不需要它。尝试以下查询。

UPDATE #CC201403B_CURRENT
SET 
    MONETARY = CASE 
        WHEN (NET_SALES BETWEEN '75.00' AND '100.00') THEN '75-100'
        WHEN (NET_SALES BETWEEN '100.01' AND '125.00') THEN '100-125'
        WHEN (NET_SALES BETWEEN '125.01' AND '175.00') THEN '125-175'
        WHEN (NET_SALES BETWEEN '175.01' AND '250.00') THEN '175-250'
        ELSE '250+' END,
    RECENCY = CASE
        WHEN (DLP BETWEEN '3/1/2013' AND '5/31/2013') THEN 'DLP 10-12'
        WHEN (DLP BETWEEN '6/1/2013' AND '8/31/2013') THEN 'DLP 7-9'
        WHEN (DLP BETWEEN '9/1/2013' AND '11/30/2013') THEN 'DLP 4-6'
        WHEN (DLP BETWEEN '12/1/2013' AND '2/28/2014') THEN 'DLP 0-3' 
        ELSE '' END;

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多