【发布时间】:2013-07-19 10:35:19
【问题描述】:
是否可以编写一个通用函数/过程/select/somethingElse 来交叉加入一个表'n'次? (是的,'n' 是一个给定的参数:)
你会怎么做?
示例
有这张桌子:
Value
-------
1
2
3
交叉加入 2 次,会返回:
Value | Value
------------------
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
【问题讨论】:
-
这不是 SQL 的预期或适当使用。 SQL 数据库是面向行的,具有严格的模式,这将没有明确的模式。这些操作应该在行上完成,而不是在列上。您可以使用动态 SQL 来做到这一点,但最好远远提出一个合适的设计。
-
@AaronNaught 谢谢你的解释 Aaron :) +1
-
@AaronNaught 我在想:如果交叉连接结果以标准化结构返回,例如:(combinationId, value)。你怎么看?
-
这取决于您对
value的要求,但您可以使用递归 CTE 非常有效地做到这一点。 -
@AaronNaught 嘿好主意!听起来真的很好+1。这正是我正在寻找的替代方案。谢谢亚伦!
标签: sql sql-server sql-server-2008