Поистине замечательный ресурс для программиста любого ранга и языка – www.99-bottles-of-beer.net, в котором более чем 1500 примеров реализации вывода песни про 99 бутылок пива на самых разных языках программирования и с использованием различных приемов. Есть и варианты на разных диалектах SQL. В свободное от работы время я соорудил и свой скрипт, не совсем верно передав текст песни, но идея, думаю, будет понятна.
SELECT CASE MOD (400 - LEVEL, 4)
WHEN 3
THEN
TRUNC ((400 - LEVEL) / 4) || ' bottles of beer on the wall'
WHEN 2
THEN
TRUNC ((400 - LEVEL) / 4) || ' bottles'
WHEN 1
THEN
'Drink 1 bottle...'
ELSE
CASE
WHEN LEVEL > 396
THEN
TRUNC ((400 - LEVEL) / 4) - 1 || ' bottles left'
ELSE
'No more bottles on the wall'
END
END
FROM DUAL CONNECT BY LEVEL >= 396
Результат:
99 bottles of beer on the wall
99 bottles
Drink 1 bottle…
98 bottles left
98 bottles of beer on the wall
98 bottles
Drink 1 bottle…
…
Drink 1 bottle…
1 bottles left
1 bottles of beer on the wall
1 bottles
Drink 1 bottle…
No more bottles on the wall