因为我们可以在SQL中编写以返回单个静态值
select "Jan" as StartMonth
以类似的方式,SQL应该允许写入以返回同一列中的多个值
select {"Jan", "Feb", "Mar"} as Qtr1, {"Apr", "May", "Jun"} as Qtr2
当我们需要数据作为表来执行连接并且数据在Sp级别是未知的时,即它来自参数时,创建临时表并在临时表中插入拆分值似乎是不必要的任务。如果MS SQL Server中存在此类功能,请更正我。或者更好的方法来使用除枢轴和临时表之外的其他方法。
答案 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)
我知道这个问题被标记为sql-server,但当我在寻找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: