SQL в SQL Server стал настолько умным, что то, что кажется требующим процедурного решения, часто можно сделать с помощью чистого SQL. Мне интересно, это один из таких случаев.
Допустим, у нас есть таблица STATES и таблица CITIES.
STATES:
State: NY
CITIES
State: NY
City: Armonk
Теперь давайте усложним ситуацию с третьей таблицей: ИНСТРУКЦИИ
INSTRUCTIONS
State: NY
HowMany: 17
State: NJ
HowMany: 11
Есть ли способ в SQL Server SQL выбрать HowMany
города случайным образом из таблицы CITIES, когда три таблицы объединены в State?
Мы не знаем "top N" заранее. Он меняется в зависимости от штата.
Конечно, в таблице «Штаты» будут все 50 штатов, в таблице «Города» — все города в каждом штате, а в «Инструкциях» будет по одной записи для каждого штата, определяющей, сколько городов из этого штата необходимо (выбирается случайным образом).
P.S. Пример желаемых результатов (при условии, что инструкция для Нью-Йорка — HowMany=5, а инструкция для Нью-Джерси — HowMany = 4 и order by STATES.state
):
NJ.....Princeton
NJ.....Newark
NJ.....Camden
NJ.....Princeton
NY.....Armonk
NY.....Schenectady
NY.....White Plains
NY.....Niagara Falls
NY.....Rochester