首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sql:在一行中而不是在不同的列中显示数据

Sql:在一行中而不是在不同的列中显示数据
EN

Stack Overflow用户
提问于 2015-11-03 07:56:26
回答 3查看 63关注 0票数 1

我编写了一个sql查询,如下所示

代码语言:javascript
运行
复制
SELECT ryot_code, ryot_name, variety_group, SUM(total_area)
FROM field_survey_trn
WHERE unit_code = '01'
  AND season_cntrl = 20
  AND crop_type_code NOT IN (11,12)
  AND ryot_code != 0
GROUP BY ryot_code, ryot_name, variety_group;

输出

variety_group列中,我得到了不同行中相同ryot_code的不同种类代码。

我的问题是,我如何编写一个查询,使用该查询,我可以获得同一个种植者的所有类型或** variety_code**,如下图所示

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-03 08:06:10

我将原始问题中的查询包装在一个外部查询中,该查询对variety_group列执行枢轴操作:

代码语言:javascript
运行
复制
SELECT t.ryot_code, t.ryot_name,
    SUM(CASE WHEN t.variety_group = 10 THEN t.theSum ELSE 0 END) AS '10',
    SUM(CASE WHEN t.variety_group = 20 THEN t.theSum ELSE 0 END) AS '20',
    SUM(CASE WHEN t.variety_group = 30 THEN t.theSum ELSE 0 END) AS '30'
FROM
(
    SELECT ryot_code, ryot_name, variety_group, SUM(total_area) AS theSum
    FROM field_survey_trn
    WHERE unit_code = '01' AND season_cntrl = 20
        AND crop_type_code NOT IN (11,12) AND ryot_code != 0
    GROUP BY ryot_code, ryot_name, variety_group
) t
GROUP BY t.ryot_code, t.ryot_name
票数 1
EN

Stack Overflow用户

发布于 2015-11-03 10:40:11

您可以使用PIVOT在SQL中执行此操作。

代码语言:javascript
运行
复制
SELECT * FROM

(
   SELECT ryot_code, ryot_name, variety_group, total_area
FROM field_survey_trn
WHERE unit_code = '01'
  AND season_cntrl = 20
  AND crop_type_code NOT IN (11,12)
  AND ryot_code != 0

) as my_name

PIVOT

(

    SUM(total_area)

    FOR [variety_group] IN ([10], [20], [30])
) piv1;
票数 1
EN

Stack Overflow用户

发布于 2015-11-03 08:10:15

如果您将其设计为品种组的单列,并为ryot_code 00010004设置逗号分隔值(如10,30 ),则结果将是首选的。

如果您喜欢这个建议,那么可以使用下面的查询来完成

代码语言:javascript
运行
复制
`SELECT group_concat(variety_group separator ',') INTO var_grp, 
    ryot_code, ryot_name, SUM(total_area)
 FROM field_survey_trn
 WHERE unit_code = '01'
 AND season_cntrl = 20
 AND crop_type_code NOT IN (11,12)
 AND ryot_code != 0;`

希望这能像预期的那样起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33493985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档