首先,对你的需求有点模糊,取消c_id的重复行,然后还显示c_id,s_id。上面两个SQL不知道是否满足你的需求,就比如
select distinct c_id,s_id from xskc ,这条语句消除的是c_id和s_id同时一样的记录,所以单就c_id,还是会有重复的情况。
SQL> desc dup
Name Null Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
SQL> select from dup;
ID NAME
---------- ----------
1 AAA
2 AAA
1 BBB
3 BBB
SQL> select distinct id,name from dup;
ID NAME
---------- ----------
1 AAA
1 BBB
2 AAA
3 BBB
SQL> select distinct id from dup;
ID
----------
1
2
3
所以不管怎么样,如果你要显示c_id和s_id的话,c_id基本都可能重复,除非你还有其他的条件限制
用group by 啊
比如
select 姓名 from 表名 group by 姓名
等同于
select distinct 姓名 from 表名
你的SQL代码中的DISTINCT运算符使用方法不对。
DISTINCT只能对返回结果集的整行取唯一值,而不能对结果集其中的单个字段取唯一值,如果需要对单个字段取唯一值,解决的办法是对只含一个输出字段的SELECT语句使用DISTINCT *** 作符,但是请记住DISTINCT *** 作符不能当做函数使用,就像你提问中的那种写法“DISTINCT(czdl),”否则Jet引擎会报错。
本来想直接替你修改那段SQL代码,但是从你的SQL代码来看,不太容易弄清楚你的实际意图,改写的效果不一定适用,故暂不提供。
如果你能将所要的输出意图讲清楚,我可以为你编写一个正确的SQL代码
以下尝试修正你的SQL代码:
根据你的提问内容做如下猜测
有两张表,
czjl ( *** 作记录表)
字段:czdl( *** 作登录),czrq( *** 作日期),czje( *** 作金额)
vip(vip表)
字段:vid(vip编号),VName(vip名字)
vip表的vid字段与czjl表的czdl字段构成一对多关系
要求输出ID,姓名, *** 作日期,同一个VIP的当天 *** 作金额小计,同一人同一天有多条记录时只显示一次并按 *** 作日期降序排序
sql="select czjlczdl,vipVName,czjlczrq,sum(czjlczje) as czje from vip,czjl where vipvid=czjlczdl group by czdl,VName,czrq order by czrq DESC"
如果不要求输出czje *** 作金额的话,可以使用DISTINCT关键字将SQL代码简化为
sql="SELECT DISTINCT czdl, VName, czrq FROM vip, czjl WHERE vipvid=czjlczdl
ORDER BY czrq DESC"
如果以上猜测不符合你的想法,请发追问。
以上就是关于数据库oracle中怎么用distinct取消重复行全部的内容,包括:数据库oracle中怎么用distinct取消重复行、数据库里的distinct可以用什么替代、ACCESS 数据库,关于 DISTINCT 的一些问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)