首页 > 解决方案 > 如何根据另一列 PROC SQL 的条件创建新列

问题描述

我正在尝试使用 SAS 中的 sql 语句根据另一列的条件创建一组新列。但是,使用我当前的代码,只要不满足条件,它就会显示为 Null 值。但我不希望用这些空白来构造新列。有人可以帮忙吗?在实际数据集中,我将几个表连接在一起。

这是一个简化的模拟数据集:

模拟数据集

这是使用的代码:

PROC SQL;
Create table Sales AS 
SELECT 
SUM (CASE WHEN Sub_Category in('Coffee')THEN Previous_Sales END)AS 
Coffee_Sale,
SUM(CASE WHEN Sub_Category in('Tea')THEN Previous_Sales END)AS Tea_Sale,
SUM(CASE WHEN Sub_Category in('Soda')THEN Previous_Sales END)AS Soda_Sale
FROM data
GROUP BY Sub_Category;

我正在尝试采用这种格式:

目标格式

此代码正在返回:

代码结果

标签: sqlsas

解决方案


您只需group by要从现有代码中删除。

Create table Sales AS 
SELECT SUM (CASE WHEN Sub_Category in('Coffee')THEN Previous_Sales END)AS Coffee_Sale, 
       SUM(CASE WHEN Sub_Category in('Tea')THEN Previous_Sales END)AS Tea_Sale, 
       SUM(CASE WHEN Sub_Category in('Soda')THEN Previous_Sales END)AS Soda_Sale 
   FROM data -- no group by 

您可以为啤酒和水添加相同SUMcase 表达式。


推荐阅读