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
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
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;
我用的是这个函数解决的 row_number() over(partition by uestioncode order by uestioncode desc)感谢的的回复