#sql #sql-server
#sql #sql-server
Вопрос:
Я новичок в SQL, и у меня есть вопрос.
У меня есть 2 запроса. Первый дает такой результат:
Id Event Name Last Name Address City Phone number
-----------------------------------------------------------------
1 159784623 NAME1 LASTNAME1 ADDRESS1 CITY1 PHONENUMBER1
2 159784623 NAME2 LASTNAME2 ADDRESS2 CITY2 PHONENUMBER2
3 159784623 NAME3 LASTNAME3 ADDRESS3 CITY3 PHONENUMBER3
4 159784623 NAME4 LASTNAME4 ADDRESS4 CITY4 PHONENUMBER4
5 159784623 NAME5 LASTNAME5 ADDRESS5 CITY5 PHONENUMBER5
6 159784623 NAME6 LASTNAME6 ADDRESS6 CITY6 PHONENUMBER6
2-й запрос дает мне массив другого параметра:
Id Parameter ParameterType Event
-----------------------------------
1 ADULT INTEGER 159784623
2 CHILDREN INTEGER 159784623
3 CAR BOOLEAN 159784623
4 HOTEL LABEL 159784623
5 RESTAURANT LABEL 159784623
Мой вопрос: возможно ли выполнить запрос, который создаст в 1-м массиве столбец для каждой строки 2-х столбцов?
Если это возможно, можете ли вы мне это объяснить?
Должен признаться, я не знаю, где искать.
Результат, который я хочу, это:
Id Event Name Last Name Address City Phone number Adult Children Car Hotel Restaurant
-------------------------------------------------------------------------------------------------------
1 159784623 NAME1 LASTNAME1 ADDRESS1 CITY1 PHONENUMBER1
2 159784623 NAME2 LASTNAME2 ADDRESS2 CITY2 PHONENUMBER2
3 159784623 NAME3 LASTNAME3 ADDRESS3 CITY3 PHONENUMBER3
4 159784623 NAME4 LASTNAME4 ADDRESS4 CITY4 PHONENUMBER4
5 159784623 NAME5 LASTNAME5 ADDRESS5 CITY5 PHONENUMBER5
6 159784623 NAME6 LASTNAME6 ADDRESS6 CITY6 PHONENUMBER6
Спасибо.
Редактировать:
На самом деле я не могу изменить эту таблицу, потому что для каждого события количество строк во втором массиве может меняться. Поэтому иногда я должен добавить 5 столбцов, но иногда 47 или ничего в первом массиве.
И я запрашиваю только одно событие за раз.
Комментарии:
1. Пустые столбцы для взрослых, дочерних элементов и т. Д.?
2. Пометьте свой вопрос базой данных, которую вы используете. И нет, это невозможно с помощью простого запроса. Вам нужно будет использовать динамический SQL для создания и заполнения таблицы. Синтаксис для этого полностью зависит от базы данных.
3. Большинству людей здесь нужны образцы табличных данных и ожидаемый результат в виде форматированного текста, а не в виде изображений.
4. @jarlh да, столбцы должны быть пустыми.
5. Хорошо, поэтому продолжайте использовать два запроса и смешивайте их результаты с любым языком программирования, который вы используете для генерации JSON. SQL, на мой взгляд, не является подходящим инструментом для подобных вещей. Если вам действительно нужно использовать SQL, вы можете создать хранимую процедуру, которая генерирует SQL в виде строки (иначе динамический SQL) и выполняет его. Затем вызовите эту хранимую процедуру.
Ответ №1:
Если вы хотите добавить дополнительные столбцы с пустым или иным статическим содержимым, вы можете просто добавить их в SELECT
предложение, как в
SELECT
Id,
Event,
CAST(NULL as INT) as Adult
FROM MyTable
Комментарии:
1. К вашему сведению,
CAST
не требуется, если требуетсяint
. Если не определено, столбецNULL
будет возвращен какint
. Как показано здесь:SELECT system_type_name FROM sys.dm_exec_describe_first_result_set(N'SELECT NULL AS N FROM sys.tables;', NULL, NULL);