select t1.Name || t2.Name as CombinedCat,
t1.Percent * t2.Percent as CombinedPc
from your_table t1
join your_table t2
on t2.Category = 'Speed'
where t1.Category = 'Color'
order by CombinedCat
編輯:調整中的問題描述
如果你正在尋找與類別的動態量要做到這一點,你可以用下面的查詢,它使用遞歸CTE做到這一點:
with Categories as (
select category,
row_number() over (order by category) as seq
from your_table
group by category),
RecursiveCTE (Name, Percent, seq) as (
select t.Name,
t.Percent,
c.seq
from your_table t
join Categories c
on c.category = t.category
and c.seq = 1
union all
select r.Name || t.Name as Name,
r.Percent * t.Percent as Percent,
c.seq
from RecursiveCTE r
join Categories c
on c.seq = r.seq + 1
join your_table t
on t.category = c.category
)
select t.Name as CombinedCat,
Percent as CombinedPc
from RecursiveCTE t
where t.seq = (select max(seq) from Categories)
order by t.Name
SQLFiddle Demo
以上查詢串接的類別名稱的字母順序,b UT可以調整,通過在Categories
CTE改變order by
子句中的row_number()
功能:
row_number() over (order by category) as seq
所以,如果你添加一個類別「物種」,即「貓」或「狗」,你想像BlackFastCat/BlackFastDog/BlackSlowCat/BlackSlowDog/...自動?這是你編輯的意思嗎? –
嗨Joachim這是正確的,它會繼續追加到組合的貓 – user3672573
你怎麼知道類別的順序?爲什麼選擇「BlackFast」而不是「FastBlack」? –