Заменить строку данными столбца на сервере Sql - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть таблица с некоторыми данными, и я пытался заменить столбец строкой.

    SELECT Handset_UID, [IMEI_NO_1] AS [IMEI #1],[IMEI_NO_2] AS [IMEI #2],
    Isnull(Convert(varchar,Mfg_Date,106),'Not Found') as [Mfg. Date]        
    FROM  stock.Handset a
    join Stock.Model b
    on a.Model_ID = b.Model_ID
    JOIN Stock.Brand C
    ON A.Brand_ID = C.Brand_ID
    where a.Handset_UID = 'GFI13508637275434'

Приведенный выше запрос дает мне результат в виде одной строки.

enter image description here

Но мне нужен результат в следующем формате

enter image description here

Я пробовал Pivot Operator с использованием производного столбца, но во время реализации запутался.

Пожалуйста, помогите получить правильный запрос.

1 Ответ

1 голос
/ 22 апреля 2020

Предполагая, что вы используете SQL Сервер, как предполагает синтаксис, вы можете отключить с помощью cross apply:

select x.col, x.val
from stock.handset h
inner join stock.model m on h.model_id = m.model_id
inner join stock.brand b on on h.brand_id = b.brand_id
cross apply (values
    ('handset_uid', handset_uid),
    ('IMEI #1', imei_no_1),
    ('IMEI #2', imei_no_2),
    ('Mfg.Date', convert(varchar, Mfg_Date, 106), 'Not Found')
) x(col, val)
where h.handset_uid = 'gfi13508637275434'

Примечания:

  • значимые псевдонимы таблиц облегчают чтение и запись запроса

  • в вашем запросе есть много столбцов, которые не соответствуют псевдониму таблицы, к которой они принадлежат, что делает ваш запрос довольно неясным относительно основная структура; Я настоятельно рекомендую указать все столбцы в запросе

...