CSS_QUESTION_MAIN表结构:
QUESTIONID CHAR(36) N 问卷ID
UESTIONCODE CHAR(36) Y 问卷CODE
NAME         VARCHAR2(100) Y 问卷名称
DES         VARCHAR2(200) Y 问卷描述
FOREWORD VARCHAR2(200) Y 问卷前言
PASSNUM           NUMBER Y 问卷达标分
TS         VARCHAR2(20) Y 生成时间
ISAUTO          CHAR(1) Y Y/N
ENTERPRICEID CHAR(36) Y 公司ID
ENTERPRICECODE VARCHAR2(20) Y 公司CODE
OPERID         VARCHAR2(100) Y 操作点ID
OPERCODE VARCHAR2(100) Y 操作点CODE
USERID         VARCHAR2(100) Y 用户ID
USERCODE VARCHAR2(100) Y 用户CODE
STATUS          CHAR(1) Y 草稿(C)、生成(B)、停用(D)、禁用(F)
TYPECODE VARCHAR2(100) Y 公司为单位,不重复(问卷类型代码)表中数据有(截取部分字段):
QUESTIONID     UESTIONCODE      NAME          STATUS
1    123 问卷1            F
2    123 问卷1            F
3    456 问卷2            B
4    123 问卷1            B
5    789 问卷3            B
6    456 问卷2            F
7    1111 问卷4            B我想要的效果:
QUESTIONID     UESTIONCODE   NAME     STATUS   sum:增加一列,此列通过计算得到
3    456 问卷2       B       2
4    123 问卷1       B       3
5    789 问卷3       B       1
7    1111 问卷4       B       1
如UESTIONCODE列值有两行数据相同,且status不同,则sum列为2

解决方案 »

  1.   

    试试下面的:
    SELECT Y.QQ QUESTIONID, X.UESTIONCODE, X.NAME, 'B' STATUS, X.SUM1
      FROM (SELECT UESTIONCODE, NAME, COUNT(*) SUM1
              FROM CSS_QUESTION_MAIN
             GROUP BY UESTIONCODE, NAME) X,
           (SELECT MIN(QUESTIONID) QQ, UESTIONCODE, NAME
              FROM CSS_QUESTION_MAIN
             GROUP BY UESTIONCODE, NAME) Y
     WHERE X.UESTIONCODE = Y.UESTIONCODE
       AND X.NAME = Y.NAME;
      

  2.   

    2楼的兄弟,你把status 改写成‘B’  不是我想要的。。
    我用的是这个函数解决的 row_number()  over(partition by uestioncode order by uestioncode desc)感谢的的回复
      

  3.   

    你有规律可寻是可以用row_number实现