DECLARE @icount SMALLINT
DECLARE @manu NVARCHAR(20)
DECLARE @item SMALLINTSELECT @icount=COUNT(*) FROM (
SELECT @manu=EMS_NO,@item=G_NO FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9') tSELECT @manu,@item,@icount
这是段错误的代码,请问大家内层赋值的同时,如何外部统计条数在赋值

解决方案 »

  1.   

    DECLARE @icount SMALLINT
    DECLARE @manu NVARCHAR(20)
    DECLARE @item SMALLINT 
    SELECT @manu=EMS_NO,@item=G_NO,@icount=COUNT(*) FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9' SELECT @manu,@item,@icount
      

  2.   

    DECLARE @icount SMALLINT
    DECLARE @manu NVARCHAR(20)
    DECLARE @item SMALLINT
    SELECT @manu=EMS_NO,@item=G_NO FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'
    select @icount=count(*) from dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'SELECT @manu,@item,@icount
      

  3.   

    不知道你要干什么.
    内部的子查询不能赋值.
    如果是要统计EMS_IMG_ID等于某个值的行数.将子查询去掉.
    如果EMS_IMG_ID = 某个值只返回一条记录的话,那么就不用统计行数了.如果EMS_IMG_ID = 某个值返回多条记录.
    如果将它赋值给某个变量的话,那只会得到最后那条记录的值.
    记着..一个变量跟一个结果集是不同的概念.
      

  4.   


    嗯  谢谢前辈    where 是随变写的,在存储过程里我赋值以后看看条数为不为0
      

  5.   


    SELECT    @icount=(select  COUNT(*) FROM dbo.PTS_IMG  where EMS_IMG_ID = T.EMS_IMG_ID)
       @manu=EMS_NO,
       @item=G_NO ,FROM dbo.PTS_IMG TWHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'
      

  6.   


    SELECT 
        distinct 
       @icount=(select  COUNT(*) FROM dbo.PTS_IMG  where EMS_IMG_ID = T.EMS_IMG_ID)
       @manu=EMS_NO,
       @item=G_NO ,FROM dbo.PTS_IMG TWHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'
      

  7.   


    对不起啊   是我举例子的 where 写的不好,应该是有几条、一条或空的结果
    对语法不太了解,特意来请教大家
      

  8.   


    DECLARE @icount SMALLINT
    DECLARE @manu NVARCHAR(2000)
    DECLARE @item SMALLINT
    SET @manu=''
    SET @item=0
    SET @icount=0
     
    SELECT @manu=@manu+','+EMS_NO,@item=@item+G_NO,@icount=@icount+1 FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9' SELECT @manu,@item,@icount
      

  9.   

    仔细看了我的存储过程是这样的SELECT TOP 1 @MANUAL_NO=ManualNo,@Item_NO=Item FROM @TP_Table WHERE IsOver=0 ORDER BY Result DESC
    看来要写两句了O(∩_∩)O