问题标签 [ansi-sql-92]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
409 浏览

c# - 复制整个大型 OpenEdge 表

我需要找到读取大型 OpenEdge 表(超过 1 亿行)的最快方法,最好以编程方式(在 c# 中)和 ETL 工具(如 SSIS)或暂存格式(如文本文件提取)之外。

我目前正在使用 ODBC(驱动程序:Progress OpenEdge 11.5)使用 OFFSET 和 FETCH 修饰符批量查询 OpenEdge 11.5 表

我正在通过带有FetchArraySize: 25和的系统 DSN 进行查询QueryTimeout: -1。我正在连接到一个 OpenEdge 服务器组,该服务器组设置为使用message buffer size: 1024.

我发现性能很差(每 15 分钟大约有 100 万条记录),我怀疑在使用 OFFSET FETCH 修饰符时它只会在我通过表格时变慢。

我的问题是我可以采用任何方法或可以使用的设置来调整查询性能吗?

  1. 例如,有没有更好的方法来构建我的 SQL 查询?例如,我应该按索引中的列而不是 ROWID 排序吗?
  2. 我应该增加 sql server 组上的消息缓冲区大小吗

或者我应该寻找替代方法来从表中读取数据?


注意:每个批次随后都被sqlbulkcopy编入一个 SQL Server 表中

0 投票
2 回答
25 浏览

sql - 按 max(year) 选择一行并按名称分组,但还包括结果集中的其他值

我对表格中的特定选择有疑问。In 想查找按姓名分组的所有人员,其最大年份。但我还需要结果集中的其他列,以便稍后加入。

此外,id 是无序的,因此不能在聚合函数中使用。查询应该与数据库无关。

这是表格:

在此处输入图像描述

这是我需要的结果:

在此处输入图像描述

0 投票
2 回答
72 浏览

sql - 来自 SQL/92 的查询在更高版本中不起作用

我有一个这样的sql查询:

我的问题在最后一行:sql 无法识别表 tt!

正如我在 SQL/92 中所知道的那样,表的这种用法是有效的。但我不知道在以后的版本中应该使用什么替代方案。

我正在使用这个版本的 MY-SQL:

mysql Ver 14.14 Distrib 5.7.25,适用于使用 EditLine 包装器的 Linux (x86_64)

更新:我希望 tt 中“countt”的行是 tt 中所有行中的最大值。数字“12”是一个例子,因为根据我数据库中的数据,“count”列的最大值将为 12

0 投票
1 回答
54 浏览

sql - 请求有关如何在一个查询中对多个条件的计数进行分组的帮助

我需要计算在给定时间范围内生效日期早于月份结束日期并且终止日期在第一个日期月份之前的订阅者数量。然后,我需要将这些结果分组到按年和月格式化的报告中。如果订阅者在 2019 年 2 月 12 日成为订阅者并且在 2019 年 10 月 12 日之前一直是订阅者,则输出需要反映订阅者有效的每个月的计数为 1,而订阅的计数为 0没有效果。我需要计算满足每个条件的位置,而不仅仅是像CASE那样满足第一个条件的位置。

我使用 SAS 并尝试使用 CASE WHEN 手动创建我想用来聚合满足每个 WHEN 条件的订阅者的年月分组。我怀疑这不会实现我所希望的,因为一旦满足第一个条件,CASE 就会终止,从而消除了这个练习的意义。我需要计算订阅者有效的每个 year_month 期间。使用 CASE,仅计算有效订阅的第一个月,并且由于 CASE 的工作方式,剩余的订阅持续时间从计数中删除。

如果我要查询一个订阅者,结果应该会产生这个期望的输出:


—————————————————————————
column1_year_month
201801
201802
201803
201804
201805
201806
201807
201808
201809
201810
201811
201812


column2_subscriber_count
0
1
1
1
1
1
1
1
1
0
0
———————————————————————————</p>

从结果集中可以看出,我还需要在没有订阅者的月份报告零。

数据列存储在一张表中,如下所示:
Name, Type, Length, Format
Product, Character, 80, 80
Subscriber_ID, Character, 20, 20
Eff_Date, Date, 8, DATETIME22.3
Term_Date, Date, 8, DATETIME22.3

Excel 中的 COUNTIF 函数可以很好地处理这个问题,但我还没有找到一种方法来严格地在 DBMS 中完成这个任务。我希望找到一个与 DBMS 无关的解决方案。不幸的是,一旦满足条件,CASE 表达式就会终止。我需要的是计算满足的每个条件,并允许我按它们匹配的月度对这些计数进行分组。

任何帮助是极大的赞赏。

0 投票
0 回答
134 浏览

sql - SQL 类型 TIME WITH TIMEZONE 有意义吗?

在将一些数据库列映射到 Java 类时,我偶然发现了这种晦涩难懂的SQL-92 标准类型(由 PostgreSQL、H2 和 HyperSQL afaik 实现)。我从未使用过它,但我想了解如果我找到它,它是如何清晰地映射到 Java 类型的。

以下是我可以看到的变体:

  • 案例 ATIME类型,例如15:20:01。这是“当地时间”。时区对应用程序是显而易见的,因此数据库不会记录它。

  • 案例 BTIME带偏移量的,如15:20:01+04:00. 它代表“世界时间”。这个时间可以简单地转换为 UTC 或任何其他世界时钟。

  • 案例 CTIME带有时区的 A,例如15:20:01 EDT. 由于解释时间的规则很大程度上取决于具体的日期,如果没有日期,我就无法真正理解它;但是,如果我添加日期,它就会变成TIMESTAMP,这是完全不同的东西。

那么,SQL 标准是否弄错了?或者也许“带时区的时间”应该始终解释为“带偏移的时间”(案例 B)?

0 投票
2 回答
85 浏览

sql - 如何在 SQL-92 中获取两位数的日期月份?

我的表格中有一个日期格式单元格,我需要将月份提取为两位数。这意味着6-4-2021应该返回04。主要问题是这需要在 SQL-92 的语法中。关于如何做到这一点的任何想法?

0 投票
0 回答
94 浏览

sql - 如何通过 SuiteQL 选择值,我可以过滤多选字段

我有一个简单的表ItemMapping,2个字段,一个字段是单个项目列表字段SingleSelectField,值为“A”,其他为多个项目列表字段MultiSelectField,值为(“B”,“C”,“D”)。

I Wanna get This mapping relationship 通过“B”,我尝试设置一个数据集,并像以前一样尝试一些单一的 SuiteQL,但我总是返回空结果。

任何提示都可以帮助我。先感谢您。