select 网店情况=dbo.uf_GetStationName(station_id_dest),
工资=(SELECT TOP 1 COUNT(DATEDIFF(second,db_fb.yh_date,tj_shelf.input_date)/ 3600.00) FROM tj_shelf, tj_shelf_item, tj_dm_rk WHERE tj_shelf.dm_id = tj_shelf_item.dm_id AND tj_shelf_item.source_id = tj_dm_rk.dm_id AND tj_dm_rk.dm_id_source = db_fb.source_id)
 from db_fb
  where is_destroy='0'and receipts_class ='FB'
and station_id_dest IN('tw16','tw17')and input_date between convert(datetime,'2013-06-18') and convert(datetime,'2013-06-24 23:59:59')
and (SELECT TOP 1 DATEDIFF(second,db_fb.yh_date,tj_shelf.input_date)/ 3600.00 FROM tj_shelf, tj_shelf_item, tj_dm_rk WHERE tj_shelf.dm_id = tj_shelf_item.dm_id AND tj_shelf_item.source_id = tj_dm_rk.dm_id AND tj_dm_rk.dm_id_source = db_fb.source_id)<0
 GROUP BY db_fb.station_id_dest,db_fb.source_id
 ORDER BY station_id_dest ASC我想统计工资记录条数。提示:在包含外部引用的被聚合表达式中指定了多个列。如果被聚合的表达式包含外部引用,那么该外部引用就必须是该表达式中所引用的唯一的一列。

解决方案 »

  1.   

    select 网店情况=dbo.uf_GetStationName(station_id_dest),
    工资=(SELECT TOP 1 COUNT(DATEDIFF(second,db_fb.yh_date,tj_shelf.input_date)/ 3600.00) FROM tj_shelf, tj_shelf_item, tj_dm_rk WHERE tj_shelf.dm_id = tj_shelf_item.dm_id AND tj_shelf_item.source_id = tj_dm_rk.dm_id AND tj_dm_rk.dm_id_source = db_fb.source_id)
     from db_fb
      where is_destroy='0'and receipts_class ='FB'
    and station_id_dest IN('tw16','tw17')and input_date between convert(datetime,'2013-06-18') and convert(datetime,'2013-06-24 23:59:59')
    and (SELECT TOP 1 DATEDIFF(second,db_fb.yh_date,tj_shelf.input_date)/ 3600.00 FROM tj_shelf, tj_shelf_item, tj_dm_rk WHERE tj_shelf.dm_id = tj_shelf_item.dm_id AND tj_shelf_item.source_id = tj_dm_rk.dm_id AND tj_dm_rk.dm_id_source = db_fb.source_id)<0
     --GROUP BY db_fb.station_id_dest,db_fb.source_id --去掉这句
     ORDER BY station_id_dest ASC
      

  2.   

    把 GROUP BY db_fb.station_id_dest,db_fb.source_id
     ORDER BY station_id_dest ASC
    去掉试试。
    看不懂楼主想查什么
      

  3.   

    Group和Order都注释了,还是同样的错误提示。
      

  4.   

    那就是你那个自定义函数有问题了
    你单独测试一下
    select dbo.uf_GetStationName('输入一个存在的描述')
      

  5.   

    --这样能成功吗?估计dbo.uf_GetStationName函数有问题
    select 工资=(SELECT TOP 1 COUNT(DATEDIFF(second,db_fb.yh_date,tj_shelf.input_date)/ 3600.00) FROM tj_shelf, tj_shelf_item, tj_dm_rk WHERE tj_shelf.dm_id = tj_shelf_item.dm_id AND tj_shelf_item.source_id = tj_dm_rk.dm_id AND tj_dm_rk.dm_id_source = db_fb.source_id)
     from db_fb
      where is_destroy='0'and receipts_class ='FB'
    and station_id_dest IN('tw16','tw17')and input_date between convert(datetime,'2013-06-18') and convert(datetime,'2013-06-24 23:59:59')
    and (SELECT TOP 1 DATEDIFF(second,db_fb.yh_date,tj_shelf.input_date)/ 3600.00 FROM tj_shelf, tj_shelf_item, tj_dm_rk WHERE tj_shelf.dm_id = tj_shelf_item.dm_id AND tj_shelf_item.source_id = tj_dm_rk.dm_id AND tj_dm_rk.dm_id_source = db_fb.source_id)<0
     --GROUP BY db_fb.station_id_dest,db_fb.source_id --去掉这句
     ORDER BY station_id_dest ASC
      

  6.   

    uf_GetStationName函数贴出来看看