高分相赠。请问一条十分难的SQL语句。

问题描述

数据源ID(自增)productcode(有相同项)status(有重复的)createdate1c112008-11-112c112008-11-123c122008-11-134m142008-11-112m142008-11-113c322008-11-13取数规则:WHERE1productcode必须同时存在两个以上。WHERE2在WHERE1的基础上status也必须存在两个以上且不能有相同的值,并且按createdate升序,取倒数第二个。以上就是需求,在例子中应取到2c112008-11-12这条数据(也就是ID=2)谢谢各位帮帮小弟。

解决方案

解决方案二:
啊。没人?
解决方案三:
declare@tbtable(idint,productcodevarchar(10),statusint,createdatedatetime)insertinto@tbselect1,'c1',1,'2008-11-11'insertinto@tbselect2,'c1',1,'2008-11-12'insertinto@tbselect3,'c1',2,'2008-11-13'insertinto@tbselect4,'m1',4,'2008-11-11'insertinto@tbselect2,'m1',4,'2008-11-11'insertinto@tbselect3,'c3',2,'2008-11-13'selecttop1id,productcode,status,convert(varchar(10),createdate,120)ascreatedatefrom(selecttop2*from(select*from@tbtwhereexists(select1from@tbwhereproductcode=t.productcodeandstatus=t.statusgroupbyproductcode,statushavingcount(1)>1))torderbycreatedatedesc)t

2c112008-11-12
解决方案四:
楼主老大,我怎么没看到高分在哪
解决方案五:
呵呵楼主可能是新人不会结贴。。。不过你的方法很好
解决方案六:
听说是高分,前来以蹭^&^
解决方案七:
新手学习一下
解决方案八:
听说是高分,一点也不高
解决方案九:
:)我都没蹭着呢
解决方案十:
哦改一下需求:数据源ID(自增)productcode(有相同项)status(有重复的)createdate1c112008-11-112c112008-11-123c122008-11-134m142008-11-115m142008-11-116c322008-11-137b112008-11-128b122008-11-13取数规则:1productcode必须同时存在两个以上。2在1的基础上status也必须存在两个以上且不能有相同的值,并且按createdate升序,取createdate最大的那一行取到3c122008-11-138b122008-11-13以上两行。希望大侠们帮助。马上结贴,谢谢。
解决方案十一:
having看来你不熟!...这个很简单的,3楼不是回答了吗?
解决方案十二:
怎么看楼主没结过帖......
解决方案十三:
帮定
解决方案十四:
不是啊问题没解决。.net菜鸟~ぐ~(紫煈)再帮一次吧。立马就结
解决方案十五:
各位第一次的需求有误。不好意思。麻烦大家再帮一次,
解决方案:
declare@tbtable(idint,productcodevarchar(10),statusint,createdatedatetime)insertinto@tbselect1,'c1',1,'2008-11-11'insertinto@tbselect2,'c1',1,'2008-11-12'insertinto@tbselect3,'c1',2,'2008-11-13'insertinto@tbselect4,'m1',4,'2008-11-11'insertinto@tbselect5,'m1',4,'2008-11-11'insertinto@tbselect6,'c3',2,'2008-11-13'insertinto@tbselect7,'b1',1,'2008-11-12'insertinto@tbselect8,'b1',2,'2008-11-13'select*from@tbtwhereexists(select1from@tbwhereproductcode=t.productcodeandstatus<>t.status)andnotexists(select1from@tbwhereproductcode=t.productcodeandcreatedate>t.createdate)

idproductcodestatuscreatedate3c122008-11-1300:00:00.0008b122008-11-1300:00:00.000建议:以后多结结帖

时间: 2024-08-01 09:52:13

高分相赠。请问一条十分难的SQL语句。的相关文章

一条很复杂的sql语句与n条简单的sql语句比,哪个效率高?

问题描述 都是在连接open以后提交语句,一条复杂语句就是操作全由数据库完成,多条简单点的语句是一部分工作由数据库完成,一部分由C#程序完成 解决方案 解决方案二:自己顶下,大神快来解决方案三:肯定是一条啊解决方案四:引用2楼lstcyzj的回复: 肯定是一条啊 如果是操作很复杂不会影响性能么解决方案五:多条简单点的语句其实就是把一些计算放在程序里做了,查询和更新用的sql语句解决方案六:自己顶下,,,,解决方案七:引用3楼newlovedew的回复: 如果是操作很复杂不会影响性能么 这真不能一

求大神帮我写一条查询增量的sql语句

问题描述 求大神帮我写一条查询增量的sql语句 如图,我有这些字段,每天都会插入一些数据 我现在需要获取的内容是 今天的read,click数据,和今天的减昨天的差值,和aid,规则如图 求大神帮我写一个 解决方案 SELECT SUM(d.read_num) AS READ, SUM(d.click_num) AS click, SUM(d.read_num - t.read_num) AS diffREAD, SUM(d.click_num - t.click_num) AS diffcli

读取数据表中第m条到第n条的数据,SQL语句怎么写?

原文:读取数据表中第m条到第n条的数据,SQL语句怎么写? 对于MySQL或者Oracle来说,如果实现从Table 表中取出第 m 条到第 n 条的记录操作,我们需要TOP函数(不是所有的数据库都支持TOP函数):Select Top子句 但是,你能想到几种方法? (1)使用not in Select TOP n-m+1 *  FROM Table  Where (id NOT IN (Select TOP m-1 id FROM Table ))     (2)使用exists  Selec

在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句写法_数据库其它

今天在写程序的时候,需要生成从开始id到结束id的sql语句.原来不需要这个功能现在就需要了. 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写? 如:在SQL SERVER中查询数据库中第10条至30条之间的数据SQL语句如何写? ------解决方案-------------------- select top 20 * from 表 where id in (select top 30 id from 表 order by id)order by id desc

ORACLE和SYBASE数据库中实现数据查询条数限制的SQL语句实现

一.概述 对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要.为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生.分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批. 本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理SQL语句的编写方法. 二.ORACLE数据库中的处理 首先,建立tb_employeeinfo表,其定义如下: be

(新年快乐!)请问高手: 如何写如下SQL语句。多谢!

问题描述 源数据表: 部门 日期 产量 A 2011-01-02 100 B 2011-04-23 20 A 2011-09-01 15 A 2011-05-01 10 A 2011-11-01 30现想产生表1:按月份统计产量: 部门 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 合计 A 100 10 15 30 155 B 20 20表2:按季度统计产量: 部门 1季度 2季度 3季度 4季度 合计 A 100 10 15 30 155 B 20 20请问大

一条全表扫描sql语句的分析

今天在对生产系统做监控的时候,发现一个process的cpu消耗很高,抓取了对应的session和执行的sql语句. 发现是一个简单的update语句,这样一条如果CPU消耗较大,很可能是由于全表扫描的. UPDATE COMM_ACTIVITY SET COMM_ACTIVITY.EXTRACT_STATUS = NVL(:1 , EXTRACT_STATUS), COMM_ACTIVITY.SOURCE_TYPE = NVL(:2 , SOURCE_TYPE), OPERATOR_ID =

6条比较有用的MySQL数据库操作的SQL语句小结

在MySQL数据库操作中,我们常常编写一些SQL语句来实现自己想要的功能.但是对于初学MySQL数据库的人来说这似乎又有一定的难度.本文我们总结了六条比较有用的SQL语句,初学者可以套用下面的格式,接下来就让我们一起来了解一下这部分内容. 1.计算年数 如果您想通过生日来计算这个人的年龄,可以用以下的语句来实现: SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0; 2.两个时间的差 取得

六条比较有用的MySQL数据库操作的SQL语句小结_Mysql

在MySQL数据库操作中,我们常常编写一些SQL语句来实现自己想要的功能.但是对于初学MySQL数据库的人来说这似乎又有一定的难度.本文我们总结了六条比较有用的SQL语句,初学者可以套用下面的格式,接下来就让我们一起来了解一下这部分内容. 1.计算年数 如果您想通过生日来计算这个人的年龄,可以用以下的语句来实现: SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0; 2.两个时间的差 取得