简体   繁体   English

SQL 服务器 - 根据“IF”条件返回多行

[英]SQL Server - Returning Multiple Rows Based on 'IF' Criteria

with a better explanation:有更好的解释:

I'm working in SQL server joining tables that that have multiple rows for each entity - or 'House' in my example data.我在 SQL 服务器连接表,每个实体都有多行 - 或者我的示例数据中的“House”。 I want only those 'House UIDs' that have a type of Garden, Drive and Entrance hall in the table I'm joining to.我只想要那些在我要加入的表中具有花园、车道和入口大厅类型的“房屋 UID”。 It doesn't matter if they have more than that, but there must be House_UID rows with at least Garden, Drive and Entrance hall as a 'Thing type' value for the House_UID to be returned.如果他们有更多并不重要,但必须有 House_UID 行,其中至少有 Garden、Drive 和 Entrance hall 作为要返回的 House_UID 的“事物类型”值。

In the example data this would be 1 and 3.在示例数据中,这将是 1 和 3。

I've tried我试过了

Select HOUSE_UID, THING_TYPE from HOUSES

Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING

WHERE HOUSE_UID in (select HOUSE_UID from houses 
                    Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
                   where house_thing = x)
   and HOUSE_UID in (select HOUSE_UID from houses 
                    Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
                   where house_thing = y)

   and HOUSE_UID in (select HOUSE_UID from houses 
                    Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
                   where house_thing = z)

but this doesn't seem to work - I'm getting results that don't have rows for everything I'm interested in. Any new ideas welcome!但这似乎不起作用 - 我得到的结果没有我感兴趣的所有行。欢迎任何新想法!

Thanks谢谢

示例数据

use aggregation使用聚合

select houseid from table_name
where house in ('Garden', 'Drive','Entrance hall')
group by houseid
having count(distinct house)>=3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM