-
SQL 查询求值------谢谢大师3
查询求值
表一:(行情表)tb_trade_0160
ID DATE(日行情1) cusum (行情额度1)
78460 1991-04-12 50.00
78460 1991-04-13 60.00
78460 1991-04-14 70.00
678460 1991-04-15 190
78460 1991-04-16 200
78460 1991-05-13 230
78460 1991-05-14 250
78460 1991-05-15 300
78460 1991-05-16 350
表二 :(复权表)tb_trade_0168
ID DATE(日行情2) cusum (行情额度2)
78460 1991-04-15 203.00
78460 1991-05-14 601.00
78460 1991-05-16 707.00
我想实现的是:
用行情表tb_trade_0160里面的(DATE(日行情1)) 这个日期去跟:(复权表)tb_trade_0168 的这个日期( DATE(日行情2))去匹对
如果相信两个日期如:DATE(日行情1) 1991-04-15 =DATE(日行情2)1991-04-15 那么此时 cusum (行情额度1)
的值应该是 cusum (行情额度2)的值
最终实现结果如下
ID DATE(日行情) cusum (行情额度)
78460 1991-04-12 50.00
78460 1991-04-13 60.00
78460 1991-04-14 70.00
678460 1991-04-15 203.00 ---重点(看看是从哪里去)
78460 1991-04-16 203.00 ---重点(看看是从哪里去)
78460 1991-05-13 203.00 ---重点(看看是从哪里去)
78460 1991-05-14 601.00---重点(看看是从哪里去)
78460 1991-05-15 601.00---重点(看看是从哪里去)
78460 1991-05-16 707.00
大家能看明白吧
问题补充:haidage 写道select t1.id, t1.date, cusum from tb_trade_0160 t1 left outer join tb_trade_0168 t2 on (t1.date = t2.date)
您好,给你解释一下。
首先要出现你的结果就要做个连接查询,两个表的左连接查询后结果是这样的
ID DATE(日行情) cusum (行情额度)
78460 1991-04-12 null
78460 1991-04-13 null
78460 1991-04-14 null
678460 1991-04-15 203.00
78460 1991-04-16 203.00
78460 1991-05-13 203.00
78460 1991-05-14 601.00
78460 1991-05-15 601.00
78460 1991-05-16 707.00
但是cusum这个列的是要取t的值,所以在列取值的时候要做一下判断所以在
case when cusum is null then t1.cusum then t2.cusum end
这句话的意思就是如果cusum列有null值就会取表tb_trade_0160中的cusum值否则取tb_trade_0168 中的sucum的值,不知道这下你明白了吗?
很开心你给我的解释,但是你的实现方法并不是我要求实现的结果啊,我在我这里执行根本没有达到我要求的结果啊 还有你的 IS NULL 用的也不对啊,你至少要用到这个函数啊 isnull 你可能要理解一下这两个函数的区别了啊
问题补充:haidage 写道哦,对不起。我弄错了。这个题还挺难。一时还没有想到。对不起了。
恩,没有关系了,我很感谢你能替我分析,主要我们很难发现这个题如何下手,所以我都想了好久了都是不知道怎么解决,如果你能想到随时告诉我,我们也算认识做个技术交流的朋友2010年4月13日 10:23
5个答案 按时间排序 按投票排序
-
declare @t table(ids int identity(1,1), id varchar(10),date datetime,custom int) insert @t select t1.id,t1.date,t2.cusum from tb_trade_0160 t1 left join tb_trade_0168 t2 on t1.date <= t2.date select * from @t where ids in ( select min(ids) as minid from @t group by date )
结果:ids id date custom 1 78460 1991-04-12 00:00:00.000 203 4 78460 1991-04-13 00:00:00.000 203 7 78460 1991-04-14 00:00:00.000 203 10 678460 1991-04-15 00:00:00.000 203 13 78460 1991-04-16 00:00:00.000 601 15 78460 1991-05-13 00:00:00.000 601 17 78460 1991-05-14 00:00:00.000 601 19 78460 1991-05-15 00:00:00.000 707 20 78460 1991-05-16 00:00:00.000 707
你表没有唯一标识列,加辅助列操作。如果是sql2008直接用rowid()也可以2010年4月14日 14:15
-
select t1.id, t1.date, cusum from tb_trade_0160 t1 left outer join tb_trade_0168 t2 on (t1.date = t2.date)
您好,给你解释一下。
首先要出现你的结果就要做个连接查询,两个表的左连接查询后结果是这样的
ID DATE(日行情) cusum (行情额度)
78460 1991-04-12 null
78460 1991-04-13 null
78460 1991-04-14 null
678460 1991-04-15 203.00
78460 1991-04-16 203.00
78460 1991-05-13 203.00
78460 1991-05-14 601.00
78460 1991-05-15 601.00
78460 1991-05-16 707.00
但是cusum这个列的是要取t的值,所以在列取值的时候要做一下判断所以在
case when cusum is null then t1.cusum then t2.cusum end
这句话的意思就是如果cusum列有null值就会取表tb_trade_0160中的cusum值否则取tb_trade_0168 中的sucum的值,不知道这下你明白了吗?2010年4月13日 15:40
-
[size=medium]
select t1.id, t1.date, (case when t1.cusum is null then t2.cusum else t1.cusum end) cusum // 关键是这句你看一下意思就是左连接判断t1表中cusum 是否为空为空取t2表中的cusum值否则去表一中的值 from tb_trade_0160 t1 left outer join tb_trade_0168 t2 on (t1.date = t2.date)
[/size]2010年4月13日 11:39
相关推荐
开源的AI自动生成SQL语句源代码,这款SQLCoder-70B-Alpha在文本到SQL的转换能力上超越了包括GPT-4在内的所有通用模型,它能更准确地理解你的需求,并生成相应的SQL查询。SQLCoder2和SQLCoder-7B模型已经向公众开放,...
- **函数**:探讨了标量函数和表值函数的区别,以及如何在T-SQL中使用自定义函数来增强查询的灵活性和重用性。 - **事务处理**:阐述了事务的基本概念及其在SQL Server中的实现方式,包括如何使用BEGIN TRANSACTION...
本文将深入探讨与“sql-map-2.dtd”和“sql-map-config-2.dtd”相关的知识点,以及它们在Ibatis中的作用。 Ibatis是一个轻量级的ORM(对象关系映射)框架,它允许开发者将SQL语句直接写在配置文件中,通过XML映射...
SQL2022-SSEI-Eval.exe
本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...
flink-sql-connector-hive-3.1.2-2.12-1.15.4.jar
sql server 2019官方版本中文安装包,安装过程简单明了 SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型...
flink-sql-connector-oracle-cdc 2.5-SNAPSHOT
这个压缩包包含了一个名为"flume-ng-sql-source-release-1.5.2.jar"的文件,这是该插件的核心组件,用于实现SQL查询以从数据库中提取数据。 Apache Flume是一个分布式、可靠且可用于有效收集、聚合和移动大量日志...
《SQL2008技术内幕——T-SQL查询》是一本深入探讨Microsoft SQL Server 2008数据库管理系统中T-SQL(Transact-SQL)查询的权威指南。T-SQL是SQL Server的核心语言,用于数据操作、存储过程编写、触发器定义以及...
官方发布的sqlserver2005sp3-kb955706-x86-chs.exe,现在官方已经删除了资源,我有幸下载过一份,有需要可以下载。
书中会给出具体的SQL语句示例,并解释如何使用参数化查询避免SQL注入攻击;或者当需要根据特定条件自动执行某些操作时,则可以通过触发器来实现自动化处理。 #### 总结 《SQL Server 2005 T-SQL Recipes: A Problem...
对于SQL Server 2012,T-SQL的掌握至关重要,因为它直接影响到数据的查询效率、数据库设计以及应用程序的性能。 本书的核心内容可能包括以下几个方面: 1. **基础查询**:介绍如何使用SELECT语句进行基本的数据...
SQL Server 2019 正式版安装引导介质,可下载ISO到本地进行安装。不支持Windows7及以下系统安装。
Flume-ng-sql-source的核心功能在于,它能够定期查询指定的SQL数据库,并将查询结果作为事件流传输到Flume的数据通道中,进一步处理或存储。这一特性使得Flume可以方便地整合各种结构化数据源,如MySQL、PostgreSQL...
flink-sql-connector-oceanbase-cdc 2.5-SNAPSHOT
flink-sql-connector-mongodb-cdc 2.5-SNAPSHOT
这款组件的出现,极大地简化了对Elasticsearch数据的查询、分析和管理过程,同时也让那些熟悉SQL语法的开发者能够更快地融入Elasticsearch的生态环境。 一、SQL支持与兼容性 X-Pack SQL JDBC的核心功能在于它对SQL...
flink-sql-connector-kafka_2.12-1.13.1.jar 是 Apache Flink 的一个 Kafka SQL Connector 的 JAR 包,用于在 Flink SQL 环境中与 Apache Kafka 集成。这里面的数字 2.12 和 1.13.1 分别表示了这个 JAR 包所依赖的 ...
flink-sql-connector-mysql-cdc-1.1.1.jar