如何自动将SQL生成的#final表拆分为三个订阅状态数据表?
自动拆分#final临时表为三个订阅状态客户表的SQL实现
需求背景
每周生成的临时表#final结构及示例数据如下:
| Member | IsSubscribed |
|---|---|
| 001 | NULL |
| 002 | 1 |
| 003 | NULL |
| 004 | 0 |
需要自动生成三个独立数据表,无需手动注释切换查询:
- 已订阅客户表(
IsSubscribed = 1) - 未订阅客户表(
IsSubscribed = 0) - 无订阅状态客户表(
IsSubscribed IS NULL)
原手动实现方式
之前需手动取消注释执行单条查询:
--SELECT * FROM #final WHERE IsSubscribed = 1 --SELECT * FROM #final WHERE IsSubscribed = 0 --SELECT * FROM #final WHERE IsSubscribed IS NULL
自动生成三个表的SQL代码
使用SELECT INTO语句直接创建三个临时表(若需永久表可去掉#前缀):
-- 创建已订阅客户表 SELECT * INTO #Subscribed_Customers FROM #final WHERE IsSubscribed = 1; -- 创建未订阅客户表 SELECT * INTO #Unsubscribed_Customers FROM #final WHERE IsSubscribed = 0; -- 创建无订阅状态客户表 SELECT * INTO #No_Subscription_Status_Customers FROM #final WHERE IsSubscribed IS NULL;
生成的目标表结果
已订阅客户表(#Subscribed_Customers)
| Member | IsSubscribed |
|---|---|
| 002 | 1 |
未订阅客户表(#Unsubscribed_Customers)
| Member | IsSubscribed |
|---|---|
| 004 | 0 |
无订阅状态客户表(#No_Subscription_Status_Customers)
| Member | IsSubscribed |
|---|---|
| 001 | NULL |
| 003 | NULL |
内容的提问来源于stack exchange,提问作者DrPaulVella
相关产品推荐
相关产品推荐

