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

无需指定连接列且不使用Pivot的Inner Join实现:单行列CTE横向展示数据的技术问询

解决方法:用恒真条件做连接

嘿,这个需求其实超简单搞定!既然你的三个CTE都只会返回一行数据,那完全不需要依赖任何实际字段来写连接条件——直接用一个永远为真的表达式就行。

你只需要把ON子句写成ON 1=1(这是绝大多数SQL数据库都支持的写法),或者如果你的数据库支持布尔常量的话,写成ON TRUE也可以。这样每个CTE的单行数据就会直接横向拼接在一起,完美满足你要的同一行展示的需求。

修改后的完整SQL代码如下:

;with cteSales as ( 
    select count(*) as 'Total' 
    from sales 
    where weeknum = 33 
), 
cteVendors as ( 
    select count(*) as 'vendors' 
    from Vendors 
    where weeknum = 33 
), 
cteClients as ( 
    select count(*) as 'clients' 
    from Clients 
    where weeknum = 33 
) 
select total, vendors, clients 
from cteSales 
inner join cteVendors on 1=1 
inner join cteClients on 1=1

为什么这样可行?

因为当每个被连接的对象都只有一行时,ON 1=1这种恒真条件会让数据库直接做笛卡尔积,但由于每个CTE只有一行,最终结果就是把三个独立的统计值合并到同一行里,完全不需要分组、Pivot这些复杂操作,简洁又高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:13:13