SELECT *
FROM (
SELECT t.*,
COUNT(CASE report_code WHEN 'COSTS' THEN 1 END)
OVER (PARTITION BY project_id) AS num_costs_reports
FROM table_1 t
)
WHERE num_costs_reports = 0
如果project_id是主键,那么每个project_id只能出现一次,你只需要:
SELECT *
FROM table_1
WHERE report_code IS NULL
OR report_code != 'COSTS'
2条答案
按热度按时间5us2dqdw1#
要提取没有报告代码“COSTS”的项目,可以使用以下SQL查询:
1.外部查询从Table_1中选择不同的项目ID。
此查询将返回一个没有报表代码“COSTS”的项目ID列表。如果需要有关这些项目的其他详细信息,可以使用项目ID作为联接键将此查询的结果与原始表联接。
wko9yo5t2#
主键是
PROJECT_ID
。但是这个
Table_1
保存了几行report_code
的细节,而project_id
是相同的。这是没有意义的,因为主键是唯一的,只能出现一次。如果我们假设它不是主键,并且根据你的描述,它确实出现了多次,那么你可以使用
COUNT
分析函数的条件聚合(通过一次表扫描来完成):如果
project_id
是主键,那么每个project_id
只能出现一次,你只需要: