【发布时间】:2013-02-11 05:35:58
【问题描述】:
我有由this stored procedure 生成的结果。
我想将这些结果与另一个表中的数据连接起来。我已经看到了创建 临时表 并将其插入其中的各种示例,但是,这并不理想,因为存储过程会返回许多 动态列可调整的。有没有办法动态加入它们?
示例场景:
存储过程返回这个:
EXEC uspGetProductCategories
products_id | products_model | Leather Seats | Heated Seats | Tapedeck | Heater | Hybrid | Sunroof | Cruise Control
===================================================================================================================
100 | Saturn Vue | N | N | Y | N | N | N | N
200 | Toyota Pruis | Y | N | N | Y | Y | N | N
300 | Ford Focus | N | N | N | Y | N | N | Y
我想用一个 SQL 查询加入它,该查询生成如下内容:
SELECT * FROM Products_Detail
products_id | manufacturer | purchaser | pay_type
=================================================
100 | GM | GREG | P
200 | TOYT | SAM | P
300 | FORD | GREG | L
换句话说...
有没有一种无痛的方法可以做到这一点?这是我想要实现的一些伪代码(尽管我知道这不起作用):
SELECT pd.*, sp.* FROM Products_Detail pd
LEFT JOIN uspGetProductCategories sp ON pd.product_id = sp.product_id
再说一次,我知道你不能这样做,但希望它能描述我正在寻找的逻辑。
期望输出示例
products_id | manufacturer | purchaser | pay_type | products_model | Leather Seats | Heated Seats | Tapedeck | Heater | Hybrid | Sunroof | Cruise Control
=========================================================================================================================================================
100 | GM | GREG | P | Saturn Vue | N | N | Y | N | N | N | N
200 | TOYT | SAM | P | Toyota Pruis | Y | N | N | Y | Y | N | N
300 | FORD | GREG | L | Ford Focus | N | N | N | Y | N | N | Y
【问题讨论】:
-
必须将SP的结果放入临时表或将JOIN放入SP。
-
好的,所以没有办法(动态)创建临时表,而不必指定/硬编码列名?
-
代码必须在 SP 中吗?那么UDF呢?如果您必须使用 SP... 是否可以将此联接添加到存储过程本身中?
-
@MichaelFredrickson 我们中的一些人无法控制 SP 源,但必须添加(甚至“纠正”)我们从它们返回的结果,因此我们不能只添加我们的加入。:-(
标签: sql sql-server stored-procedures join