【问题标题】:How can I seperate one column into multiple columns depending on their value when selecting it?选择时如何根据它们的值将一列分成多列?
【发布时间】:2019-04-02 15:10:25
【问题描述】:

我有一个名为 assignment_answers 的表,它具有以下属性: assignment_answers_id、question_id 和 order。 order 是一个属性,可以取 0 到 9 之间的值。 我希望每个值都可以使其显示在不同的列中。例如,当订单的值为 0 时,我希望它显示在名为 number0 的列中。当它的值为 1 时,我希望它显示在名为 number1 的列中。

有人可以帮我吗?到目前为止,我已经尝试过了,但它不起作用:

SELECT (CASE WHEN assessment_answers.order = 0 
             THEN(
              select aq.order as number0
              from assessment_answers)
              END)
       (CASE WHEN assessment_answers.order = 1 
             THEN(
              select aq.order as number1
              from assessment_answers)
              END)
FROM assessment_answers

我收到一条错误消息: 错误:“(”处或附近的语法错误 第 6 行:(评估问题时的情况。“订单”= 1

样本数据

assignment_answers_id     question_id    order
 1                            1           0
 2                            1           0
 3                            2           1

想要的输出:

assignment_answers_id     question_id    order0  order1
 1                            1           0       null
 2                            1           0       null
 3                            2           null     1

【问题讨论】:

  • @D-Shih 我更新了问题
  • 好的我写了一个答案希望可以帮助你

标签: sql postgresql multiple-columns sql-manager


【解决方案1】:

你可以尝试使用普通的CASE WHEN

查询 1

SELECT assignment_answers_id,
       question_id,
       (CASE WHEN order = 0 THEN order END) order0,
       (CASE WHEN order = 1 THEN order END) order1
FROM assessment_answers

Results

| assignment_answers_id | question_id | order0 | order1 |
|-----------------------|-------------|--------|--------|
|                     1 |           1 |      0 | (null) |
|                     2 |           1 |      0 | (null) |
|                     3 |           2 | (null) |      1 |

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    select (aa.order = 0)::int as order_0, 
           (aa.order = 1)::int as order_1, 
           (aa.order = 2)::int as order_2, 
           . . .
    from  assessment_answers aa;
    

    【讨论】:

    • 您好,感谢您的回答!我收到一条错误消息:错误:类型“order_0”不存在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2022-01-23
    • 2014-07-05
    • 1970-01-01
    相关资源
    最近更新 更多