sql - 具有多个日期和 ID 号的多个联接当特定日期/ID 的一列不存在时省略所有列
问题描述
我正在使用子查询从多个表中提取数据。我想要日期范围内的所有日期(在本例中为财政周)的所有 ID 号(在本例中为餐厅编号)。我从每个子查询中提取一列,但如果一列(子查询)不包含特定周的数据和 ID 号,则省略整行,即使该特定日期的所有其他列都有数据/ ID。
我得到的最接近的是使用 CASE WHEN NOT EXIST。这将返回语句中的日期和 ID 以及占位符数据,但它会重复行。
select R.restaurantNumber, P.JobCodeKey,
case when not exists (select 1 from FactEmployeePayrollDay P where P.JobCodeKey = 18 and P.RestaurantKey = 190
and BusinessDateKey = 20190205 )
then 77 else p.hours end as hourz,
P.BusinessDateKey
from DimRestaurant R
join FactEmployeePayrollDay P on P.restaurantkey = r.RestaurantKey
join DimJobCode J on J.JobCodeKey = p.JobCodeKey
where R. RestaurantNumber = 195
and P.BusinessDateKey = 20190205
group by r.RestaurantNumber, p.Hours, p.BusinessDateKey, P.JobCodeKey
这是我一直在测试不同事物的代码的小版本。这是我尝试过的唯一返回任何内容的代码。但是我得到了重复的数据(占位符和日期/ID)。如果我仅从表中提取该日期和 ID(餐厅编号),FACTEMPLOYEEPAYROLLDAY
则有 27 行,但我的查询仅返回 26。(我只希望返回一行)。
解决方案
推荐阅读
- html - 没有协议和域如何创建锚点?
- php - 如何正确禁用用户的 Wordpress 注销确认?
- aws-lambda - Node.js 从 dynamoDB 获取项目并传递变量
- r - R正则表达式:匹配两个单词彼此靠近的字符串,但有异常
- neo4j - neo4j 连接有困难
- c# - 通过覆盖 BlazorComponent.BuildRenderTree(RenderTreeBuilder builder) 创建组件
- node.js - node js AT 命令返回 +CMS ERROR: 302
- go - 为什么 Go 在名称解析中查询 /etc/hosts 两次?
- java - Java 模块词汇表
- java - OWLApi:无法创建隐士推理器实例