Ответ 1
Это даст вам то, что вы хотите?
SELECT 'Jan' AS Qtr1, 'Apr' AS Qtr2
UNION ALL SELECT 'Feb' AS Qtr1, 'May' AS Qtr2
UNION ALL SELECT 'Mar' AS Qtr1, 'Jun' AS Qtr2
Как мы можем написать в SQL для возврата одного статического значения
select "Jan" as StartMonth
Аналогичным образом SQL должен позволять писать, чтобы возвращать несколько значений в одном столбце
select {"Jan", "Feb", "Mar"} as Qtr1, {"Apr", "May", "Jun"} as Qtr2
Когда нам нужны данные как таблица для выполнения соединения, а данные неизвестны на уровне Sp, т.е. они исходят из параметра, возникают ненужные задачи для создания временной таблицы и вставки разделенных значений в таблице temp. Исправьте меня, если такая функция существует на сервере MS SQL. Или лучший способ иметь его, кроме таблицы поворота и темпа.
Это даст вам то, что вы хотите?
SELECT 'Jan' AS Qtr1, 'Apr' AS Qtr2
UNION ALL SELECT 'Feb' AS Qtr1, 'May' AS Qtr2
UNION ALL SELECT 'Mar' AS Qtr1, 'Jun' AS Qtr2
Я знаю, что этот вопрос отмечен sql-server, но он был одним из лучших результатов Google, когда я искал ответ Postgres, поэтому здесь для Postgres:
Это:
VALUES ('Jan', 'Apr'), ('Feb', 'May'), ('Mar', 'Jun');
Это эквивалентно этому:
SELECT 'Jan' AS column1, 'Apr' AS column2
UNION ALL SELECT 'Feb', 'May'
UNION ALL SELECT 'Mar', 'Jun'
Это невозможно, если вы не используете временную таблицу, как вы уже сказали.
По состоянию на SQL Server 2008 вы можете использовать Табличные значения параметров, посредством которых вы можете передать ТАБЛИЦУ данных, чтобы затем использовать/присоединяться по своему желанию внутри sproc вместо того, чтобы проходить в CSV-строку, которая вам понадобится раскол.
Ознакомьтесь с этой статьей MSDN: