选择多个静态值

时间:2011-06-03 10:46:21

标签: sql-server

因为我们可以在SQL中编写以返回单个静态值

select "Jan" as StartMonth

以类似的方式,SQL应该允许写入以返回同一列中的多个值

select {"Jan", "Feb", "Mar"} as Qtr1, {"Apr", "May", "Jun"} as Qtr2

当我们需要数据作为表来执行连接并且数据在Sp级别是未知的时,即它来自参数时,创建临时表并在临时表中插入拆分值似乎是不必要的任务。如果MS SQL Server中存在此类功能,请更正我。或者更好的方法来使用除枢轴和临时表之外的其他方法。

4 个答案:

答案 0 :(得分:30)

这会给你你想要的吗?

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

答案 1 :(得分:2)

我知道这个问题被标记为,但当我在寻找Postgres答案时,它是谷歌搜索结果中的最佳结果,所以here it is for 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'

答案 2 :(得分:0)

除非你使用像你已经建议的临时表,否则这是不可能的。

答案 3 :(得分:0)

从SQL Server 2008开始,您可以使用表值参数 - 您可以传入数据表,然后根据需要在sproc中使用/ join,而不必传入您需要的CSV字符串分裂。

查看此MSDN article