给定以下类型表,
create table products (
productid varchar(10),
make varchar(10),
age varchar(10),
colour varchar(10),
category1 varchar(10),
category2 varchar(10),
caregory3 varchar(10)
)
我想选择一个产品列表(所有字段),但每个make
. make
应通过按顺序应用一组规则来确定为每个产品选择的产品。例如, - 如果存在属于特定的红色产品make
,请选择该产品。- 对于make
尚未代表的所有产品,请选择不到两年的产品。- 对于所有make
尚未代表的产品,选择 x 的类别 1 值的产品 - 排泄物
您可以通过维护所选产品的一些内存/临时表来做到这一点,并且仅当该表尚未包含潜在产品的品牌时才将其他产品插入此表中。通过按顺序应用一个insert select into
规则,内存/临时表被填满。例如。
insert into #temp
select productid, make, age, colour, category1, category2, caregory3
from products a
where *rule applies*
and a.make not exists in (select make from #temp where a.make = #temp.make)
然而,这似乎不是很优雅。
注意:这是对实际问题的简化。在实际问题中,每个选择级别只能有一个有效产品。