#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;
Я надеюсь, что это решит вашу проблему.