我写了一个相当复杂的t-sql查询(按我的标准,因为我不是DBA)更复杂的子查询,我抽象为一个标量函数来计算和检索单个值。这一切都运行良好,直到我意识到我需要来自子查询/函数中的第二列的数据,现在我被卡住了。很明显,我可以将函数转换为一个proc来返回多个值(或者直接在主查询中声明子查询),但是如何将它们整齐地放入父查询中作为单独的列?t-sql在子查询中使用具有子查询/ proc调用的2个或多个列的select查询
我知道我可以做一些笨重的事情,如concatenate(逗号分隔)结果或使用FOR XML(我的查询包含另一个子查询,从另一个表中返回* .. 1数据),但我我正在使用实体框架,并希望保持这两个强类型的特定值。我的谷歌搜索一直使用EXISTS,但是我没有看到任何实例从select查询中实际检索列的示例,即它仅用于将逻辑应用于使用多列的where子句。
这只是不能做的事情吗?我最后的手段是尝试将子查询合并为更多连接,但我试图保持我的查询可读,并将它们组合起来将这个想法抛出窗口。
在此先感谢 - “不,这不能做”也是回答我准备接受:-)
这是一个使用这我想换到一个标量函数“小说”的例子存储过程返回2列:
SELECT t1.Field1,
t2.Field2,
,dbo.fn_Select_ComplexStuff(t1.Field3) AS ComplexStuff
FROM MyTable1 AS t1
INNER JOIN MyTable2 AS t2 ON t1.id = t2.id
WHERE t1.Field4 = 'Albatross'
很容易当你知道如何!非常感谢您的回复,它的工作原理是:-) – Rob 2011-04-28 07:46:20