mysql - MySQL 中的相同值未分组

标签 mysql

我在两个单独的表(均为 varchar(45))中有两列,并且它们都有诸如 0123456 之类的值。

我有一个联合查询,它基本上堆叠两个表中的行。

select 
'ISSUED' AS action,
card_match_key AS card_match_key,
count(0) AS CNT
from
dim_consumer_cards
group by 1 , 2 

union 

select 
'REDEEMED' AS action,
card_match_key AS card_match_key,
count(0) AS CNT
from
fct_card_redemptions
group by 1 , 2

然后是第二个查询,它在堆叠数据上形成交叉表。

Select
card_match_key as cardkey,
sum(case when action = 'ISSUED' then CNT else 0 end) as ISSUED,
sum(case when action = 'REDEEMED' then CNT else 0 end) as REDEEMED
from vw_rpt_matchkey1
group by 
card_match_key

我的问题是我的值没有按相似的值分组(例如 0123456)。 每个值应该只出现在一行上,但我得到了两行。

最佳答案

尝试更改您的第一个查询以使用通用子表达式,如下所示:

with (
     select 
     'ISSUED' AS action,
     card_match_key AS card_match_key,
     from
     dim_consumer_cards
     UNION ALL
     select 
     'REDEEMED' AS action,
     card_match_key AS card_match_key,
     from
     fct_card_redemptions) AS combined
select action, card_match_key, count(1) as CNT
from combined
group by 1,2;

在进行分组之前,需要先进行并集操作。

关于mysql - MySQL 中的相同值未分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23144985/

相关文章:

php - 使用mysqli登录系统

mysql - 错误 1059 : Identifier Name Too Long on Foreign Key Constraints from Existing Table

mysql - SQL,编辑表行中的字段,在开头和结尾输入一个字符。

mysql - 海量记录的bulk_create最佳实践

sql - Mysql 按逗号分隔的列值排序

java - 如何保存小程序的数据?

mysql - 具有复合主键的外键

php - 易趣开发者改进

mysql - 在 char 数据类型的字段中插入中文和日文字符

java - MySQL 在 Tomcat 中创建内存泄漏