sql - 将列 B 中的行复制到表 A 中列的每个类别
问题描述
DBFiddle 用于以下问题:https ://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=85a9d26620bea264c26f5584c3302f40
这是第一个名为 sample 的表:
这是名为 company 的第二个表:
我想要表样本中每个dat表公司的所有公司名称
我试过这个:
`select a.Dat, a.cname, (case when a.name <> a.cname then 0 else a.cnt end) as c from
(select s.*, c.name as cname from sample s
right join company c on c.name = s.name) a`
我明白了:
期望的输出:
如何在 MS SQL Server 中执行此操作
解决方案
使用 across join
生成行并使用 aleft join
引入现有数据:
select d.dat, c.name, coalesce(s.cnt, 0) as cnt
from (select distinct dat from sample) d cross join
company c left join
sample s
on s.dat = d.dat and s.name = c.name;
推荐阅读
- r-lavaan - 比较非嵌套模型之间的标准化因子载荷
- python - 熊猫在最后一个空格后删除数据
- google-apps-script - 如何在谷歌应用脚本中使用 Drive v3?
- c# - 实体框架:连接两个表和 where 子句
- sqlite - 使用包含空格的命名参数准备 SQLite 语句
- reactjs - 从源“http://localhost:3000”访问...的 XMLHttpRequest 已被 CORS 策略阻止
- electron - 将 Blazor 与 Electron.NET 结合使用,当我单击 MenuItem 时,如何在组件内执行代码?
- cadence-workflow - 如何在不等待的情况下获得 Activity 的结果?以事件驱动的方式
- php - 根据总分、最高分和全球、国家、省份优化 MySQL 聚合排名和排行榜查询
- python - Tkinter:检索单选按钮列和行值