You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中如何将Pivot结果的0/1转为布尔值(无需CTE)

SQL透视表将0/1转换为TRUE/FALSE(无需CTE方案)

原始stores表数据

STORE_NO    STORE_ADDRESS   STORE_TYPE  STORE_OWNER STORE_HOURS
1           123             Drive Thru  Harpo       24hrs
1           123             Curbside    Harpo       24hrs
1           123             Counter     Harpo       24hrs
2           456             Drive Thru  Groucho     9 to 9
2           456             Counter     Groucho     9 to 9

目标透视表格式

STORE_NO    STORE_ADDRESS   Drive Thru  Curbside    Counter STORE_OWNER STORE_HOURS
1           123             TRUE        TRUE        TRUE    Harpo       24hrs
2           456             TRUE        FALSE       TRUE    Groucho     9 to 9

当前问题

你目前使用的透视SQL语句返回0/1数值,需要将其转换为TRUE/FALSE布尔值,且要求不使用CTE。

解决方案

通用方案(适配PostgreSQL、SQL Server等支持BOOLEAN类型的数据库)

直接在透视结果外层,将计数的0/1值CAST为BOOLEAN类型——数据库会自动将0转为FALSE,非0值转为TRUE:

SELECT 
  STORE_NO,
  STORE_ADDRESS,
  CAST("Drive Thru" AS BOOLEAN) AS "Drive Thru",
  CAST("Curbside" AS BOOLEAN) AS "Curbside",
  CAST("Counter" AS BOOLEAN) AS "Counter",
  STORE_OWNER,
  STORE_HOURS
FROM stores
PIVOT (
  COUNT(STORE_TYPE) 
  FOR STORE_TYPE IN ('Drive Thru', 'Curbside', 'Counter')
) AS store_flattened;

MySQL 适配方案

MySQL没有原生BOOLEAN类型(实际是TINYINT(1)的别名),可以用IF函数将0/1映射为'TRUE'/'FALSE'文本:

SELECT 
  STORE_NO,
  STORE_ADDRESS,
  IF(`Drive Thru` = 1, 'TRUE', 'FALSE') AS `Drive Thru`,
  IF(`Curbside` = 1, 'TRUE', 'FALSE') AS `Curbside`,
  IF(`Counter` = 1, 'TRUE', 'FALSE') AS `Counter`,
  STORE_OWNER,
  STORE_HOURS
FROM stores
PIVOT (
  COUNT(STORE_TYPE) 
  FOR STORE_TYPE IN ('Drive Thru', 'Curbside', 'Counter')
) AS store_flattened;

无需透视的替代写法(可选)

如果不想用PIVOT语法,也可以用MAX(CASE)组合直接生成布尔结果:

SELECT 
  STORE_NO,
  STORE_ADDRESS,
  MAX(CASE WHEN STORE_TYPE = 'Drive Thru' THEN TRUE ELSE FALSE END) AS "Drive Thru",
  MAX(CASE WHEN STORE_TYPE = 'Curbside' THEN TRUE ELSE FALSE END) AS "Curbside",
  MAX(CASE WHEN STORE_TYPE = 'Counter' THEN TRUE ELSE FALSE END) AS "Counter",
  STORE_OWNER,
  STORE_HOURS
FROM stores
GROUP BY STORE_NO, STORE_ADDRESS, STORE_OWNER, STORE_HOURS;

内容的提问来源于stack exchange,提问作者Saqib Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:20:29