【问题标题】:Case statement combining two separate fields into one new field将两个单独的字段合并为一个新字段的案例语句
【发布时间】:2021-05-02 20:02:54
【问题描述】:

编辑: 让我再尝试一次。这里使用了两个主要的表。一个叫做 General,我需要用它来加入另一个叫做 Customer 的表。客户有 COLUMNS 列,例如名字、姓氏、年龄等。每个查询只有 1 条记录,但该记录可能包含两个客户。我想对新的 CASE 列进行分组,将 c1 和 c2 的年龄分组。

所以我下面的问题是,如果我想单独为每个客户创建一个新列(很棒),但我只需要 GROUP BY 一个新的 CASE,因为我希望分组不包括假设一个 40 岁的客户 2 在 20-30 分组中,如果客户 1 在该分组中,就会发生这种情况。这有意义吗?如果不以某种方式创建新表,我看不到这是怎么可能的,但我根本不想修改数据库。对不起,如果这没有意义,但我继承了这个并试图解决这个问题一直让我发疯。我现在可以做到这一点的唯一方法是 excel 并手动移动值,然后使用数据透视表。这里是代码的症结所在: 选择 gn.一般, c1.cusstage1 AS 'Customer1 Age', c2.cusstage2 AS '客户 2 年龄', 案子 当 c1.custage 介于 20-30 之间,然后是 '20-30' 当 c2.custage 介于 20-30 之间,然后是 '20-30' 以“年龄组”结尾 来自一般 gn 在 c1.general = g.general 和 c1.general = "CUST1" 上左加入客户 在 c2.cusstage = g.general AND c2.general = "CUST2" 上左加入客户

然后,我在我的表中添加了一个父组,按 AGEGROUP 分组,这看起来很棒,但没有将 c2.cusstage 分解为正确的类别。我知道逻辑有缺陷,只是想不出如何解决这个问题。明明还在学习。 提前感谢您的任何反馈。

我在一次销售中有 2 位客户,一位有 c.cusstage1,一位有 cusstage2。尝试将两个年龄分组到一个新列中并显示总数,例如:

CASE 
    WHEN c.custage1 BETWEEN 20-30 THEN '20-30' 
    WHEN c.custage2 BETWEEN 20-30 THEN '20-30' 
END AS 'AGEGROUP' 

但这不起作用。我想将两个客户年龄的小组总结作为一个总结。我不想在表中添加任何新列。谢谢!

【问题讨论】:

  • Why should I "tag my RDBMS"? - 请添加标签以指定您使用的是 mysqlpostgresqlsql-serveroracle 还是 db2 - 或其他完全不同的东西。跨度>
  • 已更新到 SQL Server,谢谢
  • case 是一个表达式而不是一个语句
  • 但这不起作用。 - 这什么也没告诉我们,你能告诉我们你得到什么错误信息吗?
  • 如果它没有返回您想要的值,那么您需要显示一些示例数据、您的实际结果和您的预期结果。如图所示,您的代码不能同时显示 cust 1 年龄和 cust 2 年龄。所以你的问题一定是遗漏了什么。

标签: sql sql-server group-by case


【解决方案1】:

请试着拼出“和”这个词

CASE 
    WHEN c.custage1 BETWEEN 20 and 30 THEN '20-30' 
    WHEN c.custage2 BETWEEN 20 and 30 THEN '20-30' 
END AS AGEGROUP 

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 2019-03-04
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多