根据列值在SQL中添加不同的行作为新行和新列值



>我完全愿意承认我的做法是错误的,但情况是这样的。我得到了一张这样的桌子:

qtr    cust_type      cust_cnt           
QTR1   new_cust       100
QTR1   return_cust    50 
QTR2   new_cust       150  
QTR2   return_cust    75

我正在尝试为每个季度创建一个新的cust_type行,以显示其他cust_types的总数量,如下所示作为最终结果:

qtr    cust_type      cust_cnt           
QTR1   new_cust       100
QTR1   return_cust    60 
QTR1   total_cust     160
QTR2   new_cust       150  
QTR2   return_cust    75
QTR2   total_cust     225

我到底为什么要这样做?原因不是很好 - Tableau 非常挑剔如何输入信息以形成特定的图形类型。

是否有一些SQL语法可以完成第二个图形?我似乎想不通一个。我对SQL:D也很陌生

您可以使用:

SELECT qtr, cust_type, cust_cnt   
FROM tab
UNION ALL
SELECT qtr, 'total_cust' AS cust_type, SUM(cust_cnt) AS cust_cnt
FROM tab
GROUP BY qtr
ORDER BY qtr, cust_cnt;

我在 Tableau 中可视化数据时遇到了同样的情况。如果您在网格中显示数据,它支持总计,但有时我们需要在下拉列表中显示总计。 不幸的是,Redshift不支持立方体或汇总。我确实使用了与卢卡斯建议相同的方式。

最新更新