mysql
. के संस्करण के आधार पर आप उपयोग कर रहे हैं, यहां एक दृष्टिकोण है जो row_number
स्थापित कर रहा है प्रति समूह, फिर conditional aggregation
. का उपयोग करके उस पंक्ति संख्या द्वारा समूहीकृत:
select
rn,
max(case when stuff = 'bag' then name end) 'bag',
max(case when stuff = 'book' then name end) 'book',
max(case when stuff = 'shoes' then name end) 'shoes'
from (
select *, row_number() over (partition by stuff order by name) rn
from stuff_table
) t
group by rn
चूंकि आप mysql
. के पुराने संस्करण का उपयोग कर रहे हैं , आपको user-defined variables
. का उपयोग करने की आवश्यकता होगी पंक्ति संख्या स्थापित करने के लिए। बाकी फिर वही काम करता है। यहां एक उदाहरण दिया गया है:
select
rn,
max(case when stuff = 'bag' then name end) 'bag',
max(case when stuff = 'book' then name end) 'book',
max(case when stuff = 'shoes' then name end) 'shoes'
from (
select *,
( case stuff
when @curStuff
then @curRow := @curRow + 1
else @curRow := 1 and @curStuff := stuff
end
) + 1 AS rn
from stuff_table, (select @curRow := 0, @curStuff := '') r
order by stuff
) t
group by rn