首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据来自另一列SQL的值创建具有计数值的新列

如何根据来自另一列SQL的值创建具有计数值的新列
EN

Stack Overflow用户
提问于 2018-09-28 18:08:23
回答 1查看 1.3K关注 0票数 0

我使用的是大型查询,我的表如下所示:

ID月份值 1234年8月P 1234 9月P 3456 8月D 3456 9月D 4567 8月P 9月4567 d

我希望为每个月生成新的列,包含P、D作为列名的ID和值是每个ID和月份的计数。如下所示:

ID月P 1234 8月1日0 1234 9月1 0 3456 8月0 1 3456 9月0 1 4567 8月1日0 9月1日

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 18:14:39

下面是用于BigQuery标准SQL的

代码语言:javascript
复制
#standardSQL
SELECT id, month, IF(value='P', 1, 0) AS p, IF(value='D', 1, 0) AS d
FROM `project.dataset.table`

您可以使用问题中的虚拟数据来处理上面的内容。

代码语言:javascript
复制
#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1234 id, 'Aug' month, 'P' value UNION ALL
  SELECT 1234, 'Sept', 'P' UNION ALL
  SELECT 3456, 'Aug', 'D' UNION ALL
  SELECT 3456, 'Sept', 'D' UNION ALL
  SELECT 4567, 'Aug', 'P' UNION ALL
  SELECT 4567, 'Sept', 'D' 
)
SELECT id, month, IF(value='P', 1, 0) AS p, IF(value='D', 1, 0) AS d
FROM `project.dataset.table`
-- ORDER BY id

有结果

代码语言:javascript
复制
Row id      month   p   d    
1   1234    Aug     1   0    
2   1234    Sept    1   0    
3   3456    Aug     0   1    
4   3456    Sept    0   1    
5   4567    Aug     1   0    
6   4567    Sept    0   1     

如果表中有重复的行,并且需要计数值与只显示它们(如上面的查询中所示),则可以使用下面的示例

代码语言:javascript
复制
#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1234 id, 'Aug' month, 'P' value UNION ALL
  SELECT 1234, 'Sept', 'P' UNION ALL
  SELECT 1234, 'Sept', 'P' UNION ALL
  SELECT 3456, 'Aug', 'D' UNION ALL
  SELECT 3456, 'Sept', 'D' UNION ALL
  SELECT 4567, 'Aug', 'P' UNION ALL
  SELECT 4567, 'Sept', 'D' 
)
SELECT id, month, COUNTIF(value='P') AS p, COUNTIF(value='D') AS d
FROM `project.dataset.table`
GROUP BY id, month
-- ORDER BY id, month    

有结果

代码语言:javascript
复制
Row id      month   p   d    
1   1234    Aug     1   0    
2   1234    Sept    2   0    
3   3456    Aug     0   1    
4   3456    Sept    0   1    
5   4567    Aug     1   0    
6   4567    Sept    0   1    
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52560681

复制
相关文章

相似问题

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