Изменение данных одного столбца с несколькими строками на данные нескольких столбцов с одной строкой

#sql #sql-server

#sql #sql-сервер

Вопрос:

Мой запрос :

 SELECT TOP 2 trans_date_np FROM day_in_status_mcg ORDER BY day_in_id DESC
 

Результат :

 2070÷10÷02  ->row 1
2070÷10÷01  ->row 2
 

Могу ли я получить такой результат :

 column 1       column 2
2070÷10÷02     2070÷10÷02
 

Я попытался использовать XML PATH.
‘trans_date_np’ — это varchar .

Ответ №1:

Если вы знаете, сколько у вас строк, вы можете использовать оператор pivot.

 SELECT [1], [2], [3], [4], [5]
FROM
(SELECT TOP 5 trans_data_np, ROW_NUMBER() over (order by day_in_id) as rowNumber  
    FROM day_in_status_mcg
    ORDER BY day_in_id
    ) AS SourceTable
PIVOT
(
min(trans_data_np)
FOR rowNumber IN ([1], [2], [3], [4], [5])
) AS PivotTable;
 

Комментарии:

1. Если количество строк неизвестно, то как я могу получить желаемый результат?

2. боюсь, не без динамического создания и выполнения инструкции. С помощью этого оператора вы можете выполнить динамический SQL.

Ответ №2:

Вы можете использовать следующий запрос:-

 SELECT MAX(trans_date_np) AS column1, (SELECT MAX(trans_date_np) 
                                       FROM day_in_status_mcg 
                                       WHERE trans_date_np< SELECT MAX(trans_date_np) 
                                                            FROM day_in_status_mcg) AS column2
FROM day_in_status_mcg;
 

Я надеюсь, что это решит вашу проблему.