#sql #sql-server
#sql #sql-сервер
Вопрос:
Это мой запрос
SELECT
F.intfloorno,
FL.nvrflatname
FROM tbl_floormaster F
INNER JOIN tbl_flatmaster FL ON FL.intfloorid=F.intfloorid
WHERE intblockid=1
ORDER BY intfloorno DESC
это вывод:
floorno flat
2 FlatB1
2 FlatB2
1 FlatA1
1 FlatA2
но мне это нужно так:
floorno flat dummycolum
1 FlatA1 FlatA2
2 FlatB2 FlatB2
Комментарии:
1. какую базу данных вы используете (Oracle, SQL Server …)?
2. Ваш пример не совсем ясен. Во-первых: у вас есть только две квартиры на этаже или больше? Второе: на floorno = 2, плоский столбец должен быть FlatB1, правильно?
3. Вы пытаетесь контролировать презентационный вывод этих данных для этого запроса или транспонировать результаты таблицы? Если это проблема с презентацией, помните, что рендеринг выходных данных — это не то же самое, что запрос структуры реляционной таблицы, как упоминает rsj ниже.
4. на первом этаже у меня две квартиры, на 2 этаже у меня две квартиры
Ответ №1:
Хорошо, и если бы ваш исходный вывод содержал 10000 экземпляров flats на floorno 1, вам понадобилось бы 9 999 фиктивных столбцов?
Игнорируя сортировку floorno — что легко с помощью предложения ORDER BY — вы путаете вывод запроса с форматом отображения выходных данных.
Запросите данные с помощью SQL, затем передайте их какому-либо другому процессу, в котором вы можете отформатировать их в своем уровне представления. Если вы опишете, каков ваш уровень представления (html?), Тогда вы можете переместить свой пост в вопрос HTML / XHR о отображении результатов запроса в таблице.
Комментарии:
1. Это была моя первоначальная мысль, хотя мне кажется, что он, возможно, просто хочет перенести таблицу
Ответ №2:
Это:
SELECT F.intfloorno as Floor,
stuff( (SELECT ',' FL.nvrflatname
FROM tbl_flatmaster FL
WHERE FL.intfloorid=F.intfloorid
ORDER BY FL.nvrflatname
FOR XML PATH ('')
), 1, 2, '') as FlatList
WHERE intblockid=1
ORDER BY intfloorno DESC
даст
Floor FlatList
1 FlatA1,FlatA2
2 FlatB1,FlatB2
не в отдельных столбцах, но, может быть, то, что вы хотите?
Ответ №3:
Вы пытаетесь контролировать презентационные результаты? Если это так, то это неправильный подход. Однако, если вы пытаетесь перенести свою таблицу, вы можете заглянуть в перекрестную таблицу или сводный запрос. Вот другое описание