SQL Server: как получить один результат с 2 запросами?

#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);