我必须将 DB2 表中的行转置为列。这就是我的表的结构。
ItemID Item Value
---------------------
1 Meeting Now
1 Advise Yes
1 NoAdvise No
2 Meeting Never
2 Advise No
2 NoAdvise Null
2 Combine Yes
Run Code Online (Sandbox Code Playgroud)
我希望将其转置为(请注意,我不想转置组合)
ItemID Meeting Advise NoAdvise
---------------------------------------
1 Now Yes No
2 Never No Null
Run Code Online (Sandbox Code Playgroud)
查询有点困难,可以帮忙吗?
我将 JOOQ 与普通/原始 SQL 一起使用,这意味着我没有使用任何代码生成或流畅的 DSL 东西。
以下代码有效:
Connection connection = ...;
DSLContext context = DSL.using(connection, ...);
String sql = "select * from mytable t where (t.id = ?)";
String id = ...; //
Result<Record> result = context.fetch(sql, id);
Run Code Online (Sandbox Code Playgroud)
现在假设我有一个带有多个参数的查询,如下所示:
String sql = "select * from mytable t where (t.id = ?) " +
"and (t.is_active = ?) and (t.total > ?)";
Run Code Online (Sandbox Code Playgroud)
如何在这些类型的查询中使用命名参数?我在想这样的事情:
String sql = "select * from mytable t where (t.id = :id) " +
"and (t.is_active = …Run Code Online (Sandbox Code Playgroud) 我一直在处理这个问题.
问题是我正在将我的查询迁移到jOOQ,当我尝试实现这部分时我遇到了问题:
select * from table where condition1 and date1 >= date_sub(now(), interval 1 days)
Run Code Online (Sandbox Code Playgroud)
具体来说这部分条件是:date_sub(now(),间隔1天)和jOOQ.
所以我的问题是:
我应该从jOOQ使用哪些函数来表示date_sub?
如何使用jOOQ 实现间隔X天?
为了澄清,日期是Timestamp类型
提前致谢!
enum类型在 PostgreSQL 9.0 和 9.1 之间的工作方式发生了一些奇怪的更新。该pg_catalog.pg_enum表enumsortorder在 PostgreSQL 9.1中有一个新列。这个顺序似乎覆盖了之前基于 OID 的枚举顺序。
特定枚举类型的 OID 保证按类型排序的方式排序,但不保证无关枚举类型的 OID 的排序。
pg_enum 行的 OID 遵循一个特殊规则:保证偶数 OID 的排序方式与其枚举类型的排序顺序相同。也就是说,如果两个偶数 OID 属于同一枚举类型,则较小的 OID 必须具有较小的 enumsortorder 值。奇数 OID 值与排序顺序无关。此规则允许枚举比较例程在许多常见情况下避免目录查找。创建和更改枚举类型的例程尝试尽可能将 OID 分配给枚举值。
创建枚举类型时,其成员被分配排序顺序位置 1..n。但是后来添加的成员可能会被赋予 enumsortorder 的负值或小数值。对这些值的唯一要求是它们在每个枚举类型中正确排序和唯一。
对于jOOQ 代码生成器,我正在阅读pg_catalog.pg_enum表,按 OID 对枚举文字进行排序,这是在 PostgreSQL 9.0 中指定的方式。使用 udpated 规范,似乎我应该按 对文字进行排序enumsortorder,它的行为似乎有所不同,因为它尊重“中间”的枚举文字插入。
从pg_catalog.
我正在使用弹性搜索查询的前缀查询.在顶级数据上使用它时工作正常,但一旦应用于嵌套数据,就不会返回任何结果.我尝试查询的数据如下所示:
这里前缀查询工作正常:查询:
{ "query": { "prefix" : { "duration": "7"} } }
Run Code Online (Sandbox Code Playgroud)
结果:
{
"took": 25, ... },
"hits": {
"total": 6,
"max_score": 1,
"hits": [
{
"_index": "itemresults",
"_type": "itemresult",
"_id": "ITEM_RESULT_7c8649c2-6cb0-487e-bb3c-c4bf0ad28a90_8bce0a3f-f951-4a01-94b5-b55dea1a2752_7c965241-ad0a-4a83-a400-0be84daab0a9_61",
"_score": 1,
"_source": {
"score": 1,
"studentId": "61",
"timestamp": 1377399320017,
"groupIdentifiers": {},
"assessmentItemId": "7c965241-ad0a-4a83-a400-0be84daab0a9",
"answered": true,
"duration": "7.078",
"metadata": {
"Korrektur": "a",
"Matrize12_13": "MA.1.B.1.d.1",
"Kompetenz": "ZuV",
"Zyklus": "Z2",
"Schwierigkeit": "H",
"Handlungsaspekt": "AuE",
"Fach": "MA",
"Aufgabentyp": "L"
},
"assessmentSessionId": "7c8649c2-6cb0-487e-bb3c-c4bf0ad28a90",
"assessmentId": "8bce0a3f-f951-4a01-94b5-b55dea1a2752"
}
}, …Run Code Online (Sandbox Code Playgroud) 好的,这里是JLS专家的一个非常好奇的Java 7语言谜题.以下代码不能用javac和Eclipse编译:
package com.example;
public class X {
public static X com = new X();
public void x() {
System.out.println(com.example.X.com);
// cannot find symbol ^^^^^^^
}
}
Run Code Online (Sandbox Code Playgroud)
似乎成员com完全阻止com.*从内部访问包X.然而,这并未得到彻底应用.以下工作,例如:
public void x() {
System.out.println(com.example.X.class);
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
注意,这只是对生成代码中的实际问题的简化,其中com.example.X需要完全限定并且com不能重命名成员.
更新:我认为它实际上可能是类似这样的问题:为什么我不能在Java中"静态导入"一个"等于"方法?
我正在尝试JOOQ,我首先想到的是运行一个将自动回滚的事务单元测试.我似乎没有让它工作,我不知道从这里去哪里.日志显示事务已启动并回滚.但是更改仍然会提交到数据库.
如何使Spring中的事务与JOOQ正常工作?
2013-11-04 23:41:14,353 [main] DEBUG DataSourceTransactionManager: Creating new transaction with name [insertPersons]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
2013-11-04 23:41:14,369 [main] DEBUG DataSourceTransactionManager: Acquired Connection [jdbc:mysql://localhost/jooq-learn, UserName=jooq@localhost, MySQL-AB JDBC Driver] for JDBC transaction
2013-11-04 23:41:14,376 [main] DEBUG DataSourceTransactionManager: Switching JDBC Connection [jdbc:mysql://localhost/jooq-learn, UserName=jooq@localhost, MySQL-AB JDBC Driver] to manual commit
2013-11-04 23:41:14,507 [main] DEBUG DataSourceTransactionManager: Initiating transaction rollback
2013-11-04 23:41:14,508 [main] DEBUG DataSourceTransactionManager: Rolling back JDBC transaction on Connection [jdbc:mysql://localhost/jooq-learn, UserName=jooq@localhost, MySQL-AB JDBC Driver]
2013-11-04 23:41:14,509 [main] DEBUG DataSourceTransactionManager: Releasing JDBC Connection [jdbc:mysql://localhost/jooq-learn, UserName=jooq@localhost, …Run Code Online (Sandbox Code Playgroud) 问题定义:
我有一个数据库表,包含大量数据(超过100,000行),表结构就像
AppID DocID DocStatus
1 100 0
1 101 1
2 200 0
2 300 1
Run Code Online (Sandbox Code Playgroud)
每个applicationID可能有数千个文档,我必须获取状态为0的文档的计数和状态为1的文档的数量按applicationID分组.
当我使用hibernate映射这个对象时,由于大量的表数据,它会占用大量的堆内存.
如何使用Hibernate查询实现此目的? 或者我应该使用SQL查询或存储过程吗?
注意:我的Web应用程序位于JAVA/Tapestry框架中并使用Hibernate 3.数据库是SQL Server 2012.
为什么我不能在子查询中首先使用select?这里我有一些伪选择引发异常:Cannot use 'first', 'limit' or 'skip' in this context.
我不明白为什么.我想先选择10个ID,然后选择此集合中的其他表行
select * from Table1 where ID in ( select first 10 ID from Table2)
Run Code Online (Sandbox Code Playgroud)
我该如何重写这个选择?
使用 bash,我想对列表进行排序和过滤,以仅保留每个次要版本(每个组)的最后一个补丁版本(最高值)。例如:
$ cat data | sort -Vr
3.10.1
3.10.0
3.3.10
3.3.2
3.3.1
3.2.0
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
Run Code Online (Sandbox Code Playgroud)
我想得到这个结果:
3.10.1
3.3.10
3.2.0
3.1.0
3.0.3
Run Code Online (Sandbox Code Playgroud)
怎么做?