SQL — Как добавить фиктивные пустые данные в запрос для каждого варианта данных?

#sql #sql-server-2008

#sql #sql-server-2008

Вопрос:

Я получил эту таблицу SQL, которую я планирую использовать в SQL-запросе:

 | Code_1 | Name_1 | Code_2 | Name_2 | Code_3 | Name_3 | Code_4 | Name_4 |
-------------------------------------------------------------------------
|  A01   | Alice  |  B01   | Bernie |  C01   | Charle |  D01   | Dean   |
|  A01   | Alice  |  B01   | Bernie |  C01   | Charle |  D02   | Donny  |
|  A01   | Alice  |  B01   | Bernie |  C02   | Claire |  E01   | Ellie  |

'and so on
  

В моем запросе я хочу:

  1. Объедините код и имя в строку.
  2. Отобразите код и объединенную строку Code Name.
  3. Добавьте фиктивную строку, где Code_4 и Name_4 пусто.

Вот так:

 | Code_1 |    Name_1    | Code_2 |    Name_2    | Code_3 |    Name_3    | Code_4 |    Name_4    |
-------------------------------------------------------------------------------------------------
|  A01   | A01 - Alice  |  B01   | B01 - Bernie |  C01   | C01 - Charle |        |              |
|  A01   | A01 - Alice  |  B01   | B01 - Bernie |  C01   | C01 - Charle |  D01   | D01 - Dean   |
|  A01   | A01 - Alice  |  B01   | B01 - Bernie |  C01   | C01 - Charle |  D02   | D02 - Donny  |
|  A01   | A01 - Alice  |  B01   | B01 - Bernie |  C02   | C02 - Claire |        |              |
|  A01   | A01 - Alice  |  B01   | B01 - Bernie |  C02   | C02 - Claire |  E01   | E01 - Ellie  |

'and so on
  

Запрос, который у меня есть до сих пор:

 select distinct [Code_1], [Code_1]   ' - '   [Name_1] as [Name_1],
                [Code_2], [Code_2]   ' - '   [Name_2] as [Name_2],
                [Code_3], [Code_3]   ' - '   [Name_3] as [Name_3],
                [Code_4], [Code_4]   ' - '   [Name_4] as [Name_4] from [SQLIOT].[dbo].[NAMES]
  

Я все еще не могу понять, как поместить пустую фиктивную строку для Code_4 amp; Name_4 .

Ответ №1:

Кажется, вы хотите union all :

 select [Code_1], [Code_1]   ' - '   [Name_1] as [Name_1],
       [Code_2], [Code_2]   ' - '   [Name_2] as [Name_2],
       [Code_3], [Code_3]   ' - '   [Name_3] as [Name_3],
       [Code_4], [Code_4]   ' - '   [Name_4] as [Name_4]
from [SQLIOT].[dbo].[NAMES]
union all
select distinct [Code_1], [Code_1]   ' - '   [Name_1] as [Name_1],
       [Code_2], [Code_2]   ' - '   [Name_2] as [Name_2],
       [Code_3], [Code_3]   ' - '   [Name_3] as [Name_3],
       NULL as [Code_4], NULL as [Name_4]
  

Исходя из ваших выборочных данных, вам не нужны select distinct общие данные, только для части с обнуленными столбцами.