鉴于以下类型的表,如何在SQL中递归地构建产品列表?
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)
但是,这看起来不太优雅。
注意:这是对实际问题的简化。在实际问题中,每个选择级别上只能有一个有效的产品。