比如说我想查商品信息我想查每个商品信息表的价格(,价格由订单表里面统计,价格分为折前价格,折后价格,利润)
价格是由一个函数来完成的,因为考虑到存储过程不能返回表首先这个函数得到商品的采购平均价(),然后在订单明细统计商品的折前价格,折后价格,数量
然后利润=折后价格-数量*平均价
但是这样写,找不到列,不清楚为什么?select 字段 from View_Stock_Detail LEFT JOIN (SELECT * FROM dbo.GetProductMoneyDetail(View_Stock_Detail.m_id,View_Stock_Detail.product_id,View_Stock_Detail.product_code))
 MoneyDetail 消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "View_Stock_Detail.m_id"。
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "View_Stock_Detail.product_id"。
实际上是有字段的,我想明白为什么,一定会有这样的需求的,谁碰到过,怎么解决,子查询的话,一下子只能返回一个列一行,郁闷死我。

解决方案 »

  1.   

    select 字段 , MoneyDetail = dbo.GetProductMoneyDetail(m_id,product_id,product_code)
    from View_Stock_Detail
      

  2.   

    select
     字段 , MoneyDetail = dbo.GetProductMoneyDetail(m_id,product_id,product_code)
    from
     View_Stock_Detail
      

  3.   

    没太仔细看,但语法是不是就没有通过呀, left join ....on  
      

  4.   

    #1 看你函数是否返回表变量,不是的话:
     select * from dbo.[函数名]([参数1],..)   是行不通的#2 按楼主的想法可以确定函数并不是返回表变量,那就老老实实的用
     select dbo.[函数名]([参数1],..) as a from tb
      

  5.   

    http://www.cnblogs.com/yukaizhao/archive/2008/04/30/cross_apply.html 可以解决,但是很慢。