这是我正在使用的sql来创建报告。
Select dw_crime_fact.no_of_crimes, dw_area_dim.area_desc, dw_time_dim.year, dw_crime_type_dim.crime_type_desc
FROM dw_crime_fact, dw_area_dim, dw_time_dim, dw_crime_type_dim
WHERE dw_crime_fact.fk2_area_id = dw_area_dim.area_id
AND dw_crime_fact.fk1_time_id = dw_time_dim.time_id
AND dw_crime_fact.fk3_crime_type_id = dw_crime_type_dim.crime_type_id
AND dw_area_dim.area_id = '9'
AND dw_crime_type_dim.crime_type_id = '120'
ORDER BY dw_time_dim.year
我在哪里包括最后两个和陈述
AND dw_area_dim.area_id ='9' AND dw_crime_type_dim.crime_type_id ='120'
我需要在这些中添加几个ID,以便:
area_id我需要它来自'9'和'10' 和 crime_type_id需要来自'80','90','120'和'200'
我已尝试制作更多和/或声明,但它们似乎没有找到数据。
请帮我解决这个问题,只需询问所需的任何其他信息。
答案 0 :(得分:1)
只需为多个值使用IN
子句。
AND dw_area_dim.area_id IN( '9', '10')
AND dw_crime_type_dim.crime_type_id IN ('80', '90', '120', '200')
顺便说一句,我会将整个查询重写为
Select
crime.no_of_crimes,
area.area_desc,
timed.year,
crime_type.crime_type_desc
FROM dw_crime_fact crime
join dw_area_dim area on area.area_id = crime.fk2_area_id
join dw_time_dime timed on timed.time_id = crime.fk1_time_id
join dw_crime_type_dim crime_type on crime_type.crime_type_id = crime.fk3_crime_type_id
WHERE
area.area_id IN( '9', '10')
AND crime_type.crime_type_id IN ('80', '90', '120', '200')
ORDER BY timed.year