表 sysflow
ordNo   isAction actionDate
2000 Y 2009-09-23 08:36:00
2000 N          NULL
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:58:00
返回信息:处理中
ordNo   isAction actionDate
2000 N NULL
2000 N NULL
2000 N NULL
2000 N NULL
2000 N NULL
返回信息:待处理
ordNo   isAction                   actionDate
2000 Y 2009-09-22 12:55:00
2000 Y 2009-09-22 10:51:00
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:53:00
2000 Y 2009-09-22 11:54:00
返回信息:待处理
请用函数来写,主要是根据isAction的值是否相同 表为SysFlow
Create Function f_getStatus(@ordNo int)

解决方案 »

  1.   

    如果isAction值都为Y,则返回的值为:已完成
    如果isAction得值为N和Y,则返回的值为:处理中
    如果isAction得值为N,则返回的值为:待处理
      

  2.   

    表 sysflow 
    ordNo      isAction    actionDate
    2000        N          2009-09-22 12:55:00
    2000        Y          2009-09-22 12:55:00
    2000        N          2009-09-22 12:55:00
    isAction字段的值有3中情况
    如果isAction值都为Y,则返回的值为:已完成 
    如果isAction得值为N和Y,则返回的值为:处理中 
    如果isAction得值为N,则返回的值为:待处理     
      

  3.   

    ...
    如果isAction值都为Y,则返回的值为:已完成
    --
    --
    ordNo  isAction                   actionDate 
    2000 Y 2009-09-22 12:55:00 
    2000 Y 2009-09-22 10:51:00 
    2000 Y 2009-09-22 11:58:00 
    2000 Y 2009-09-22 11:53:00 
    2000 Y 2009-09-22 11:54:00 
    返回信息:待处理 
      

  4.   

    Create PROC f_getStatus(@ordNo int)
    AS 
     BEGIN 
         SELECT '处理中:'+CHAR(13)+CHAR(10)
         SELECT * FROM SYSFLOW WHERE isAction ='N' AND ORDNO=@ordNo      SELECT '待处理:'+CHAR(13)+CHAR(10)
         SELECT * FROM SYSFLOW WHERE isAction ='Y' AND ORDNO=@ordNo 
     END用存储过程,不知道理解错没
      

  5.   

    主键是什么呢?isAction得值为N和Y
      

  6.   

    表 sysflow 数据如下: 
    ordNo      isAction    actionDate 
    2000                   2009-09-22 12:55:00 
    2000                   2009-09-22 12:55:00 
    2000                   2009-09-22 12:55:00 
    isAction字段的值有3中情况: 
    如果isAction值都为Y,则返回的值为:已完成 
    如果isAction得值为N和Y,则返回的值为:处理中 
    如果isAction得值为N,则返回的值为:待处理  
    请用函数来写,变量@ordNo是sysFlow表中的ordNo字段
    Create Function f_getStatus(@ordNo int )
    Returns Varchar(20)
      

  7.   

    Create PROC f_getStatus(@ordNo int)
    AS 
     BEGIN
    DECLARE @isAction nvarchar(1), @ActionCount;     SELECT @ActionCount = COUNT(DISTINCT isAction), @isAction = MAX(isAction) 
         FROM SYSFLOW
         WHERE ORDNO = @ordNo
         GROUP BY ORDNO;IF @ActionCount > 2
    RETURN N'处理中'
    ELSE IF @isAction = N'Y'
    RETURN N'已完成'
    ELSE
    RETURN N'待处理';
     END
      

  8.   

    IF @ActionCount >= 2 
    RETURN N'处理中' 
    ELSE IF @isAction = N'Y' 
    RETURN N'已完成' 
    ELSE 
    RETURN N'待处理'; 
      

  9.   

    不知道行不行,望高手指教CREATE FUNCTION f_getStatus(@ordNo int)
    RETURN VARCHAR(20) AS
    BEGIN
    DECLARE @CountN int,@CountY int
    DECLARE @ReturnValue varchar(50),@isAction varchar(8)
    DECLARE @CheckValue CURSOR
    SET @CountN=0
    SET @CountY=0
    SET @CheckValue=CURSOR FOR SELECT isAction 
                               FROM sysflow 
                               WHERE ordNo=@ordNo
                               GROUP BY ordNo
    OPEN @CheckValue
    FETCH NEXT FROM @CheckValue INTO @isAction
    WHILE @@FETCH_STATUS=0
     BEGIN
       IF @isAction='Y'
         BEGIN
           SET @CountY=@CountY + 1
         END
       IF @isAction='N'
         BEGIN
           SET @CountN=@CountN + 1
         END
      FETCH NEXT FROM @CheckValue INTO @isAction
     END
    CLOSE @CheckValue
    IF @CountY>0 AND @CountN>0
      BEGIN
        @ReturnValue='处理中'
      END
    IF @CountY>0 AND @CountN=0
      BEGIN
        @ReturnValue='处理完'
      END
    IF @CountY=0 AND @CountN>0
      BEGIN
        @ReturnValue='待处理'
      END
    RETURN @ReturnValue