我有一个表Y,我在其中插入了ROOM_ID、句点和序列(希望使问题更容易).

我想要找到存在于所有不同周期(或序列,如果这样更容易)的Room_id

在下面的示例中,ROOM_ID 2就是那个.谢谢

DECLARE @y TABLE
(room_id    numeric(10,0)   null,
 date_from  datetime        null,
 date_to    datetime        null,
 seq        int             null)

INSERT @y
SELECT 2, '2023-05-01','2023-05-02',1

INSERT @y
SELECT 5, '2023-05-01','2023-05-02',1

INSERT @y
SELECT 8, '2023-05-01','2023-05-02',1

INSERT @y
SELECT 2, '2023-05-02','2023-05-03',2

INSERT @y
SELECT 8, '2023-05-02','2023-05-03',2

INSERT @y
SELECT 2, '2023-05-07','2023-05-09',3

推荐答案

如果您有一个唯一的Period/seq值列表,那么您可以简单地

SELECT y.room_id
FROM y
GROUP BY
  y.room_id
HAVING COUNT_BIG(*) = (SELECT COUNT_BIG(*) FROM Period);

db<>fiddle

你也可以合成总数

SELECT y.room_id
FROM y
GROUP BY
  y.room_id
HAVING COUNT_BIG(*) = (SELECT COUNT_BIG(DISTINCT y2.seq) FROM y AS y2);

Sql相关问答推荐

如何将varchar传递给tvf并使用该参数来查询结果SQL服务器

帮助修复查询以识别SQL DW中数据中的递归关系

如何在PostgreSQL中同时为id s列表执行多个update语句?'

基于前面行的值:当x&>2时重复1,当连续3行x=0时则重复0

Oracle SQL-将结果列在单行中

为什么在postgres中,横向连接比相关子查询快?

当一个视图在Postgres中失效时?

对列进行排序后,基于两列删除重复行

合并分层表SQL中的第一个非空、变化的空位置

SQL数据库规范化与数据插入

更改重复值的情况

查询以从时间范围列表中查找唯一时间段

日期逻辑(查找过go 90 天内的第一个匹配行)

获取上个月和上一年的值

SQL:考虑合并分支计算分支的增长百分比

如何根据 SQL Server 中 1 条语句中 SELECT 的结果进行 INSERT 或 UPDATE

try 将多行折叠为单个结果

SQL 函数 DIFFERENCE 返回有趣的分数

使用 PL/PGSQL 函数 Select 返回多条记录

在 SQL 查询中创建滚动日期