我有一个列包含varchar2中的日期,格式不同,例如19.02.2013,29-03-2013,10/12/2013,依此类推.但最烦人的是20130713(2013年7月13日),我想将其转换为dd-mm-yyyy或dd-mon-yyyy.
以下代码给出了错误的结果.我正在使用DISTINCT命令但类型在结果上出现两次.
SELECT DISTINCT
CONCERT.CONCERT_ID, CONCERT.C_TYPE,
COUNT(BOOKINGS.CUSTOMER_CUSTOMER_ID) AS NUMBER_OF_CUSTOMERS
FROM
CONCERT, CUSTOMER, EVENT, BOOKINGS
WHERE
CUSTOMER.CUSTOMER_ID = BOOKINGS.CUSTOMER_CUSTOMER_ID
AND EVENT.EVENT_ID = BOOKINGS.EVENT_EVENT_ID
AND CONCERT.CONCERT_ID = EVENT.CONCERT_ID
GROUP BY
CONCERT.CONCERT_ID, CONCERT.C_TYPE
ORDER BY
CONCERT.CONCERT_ID DESC;
Run Code Online (Sandbox Code Playgroud)
结果:


如何为每组重复记录生成ID值,如第二个表中的ID列所示?换句话说,如何让第一个表看起来像使用SQL查询的第二个表?
假设第一个表中的名字和姓氏可以重复出现.
每个名字和姓氏可以有一个或多个购买年限和成本.
给定的图像只是一个样本.表1中的总记录可以达到数千.
我正在使用Oracle SQL.
注意:我只使用一个表,这是第一个.第二个表是我想要的.
我对Oracle XE和SQL Developer感到困惑?两者之间的主要区别是什么?我假设Oracle XE是数据库,而SQL Developer就像IDE一样执行查询?
是否可以在GROUP BY中使用OR.
例如我试过:
GROUP BY a.id (b.id OR a.id2)
Run Code Online (Sandbox Code Playgroud)
但这会产生错误
ORA-00907:缺少右括号
我有参数
:dateFrom
Run Code Online (Sandbox Code Playgroud)
它将在函数中用作TIMESTAMP的参数.我需要添加到:dateFrom + 7小时,我该怎么做?
CREATE TABLE Member
(
user_ID NUMBER NOT NULL ,
user_password VARCHAR2(50) NULL CONSTRAINT Email_153906048 CHECK (user_password IN ('%@%')),
user_email VARCHAR2(50) NULL CONSTRAINT Email_1275780631 CHECK (user_email IN ('%@%')),
user_firstName VARCHAR2(20) NULL ,
user_lastName VARCHAR2(20) NULL ,
user_type VARCHAR2(8) NULL CONSTRAINT Type_1346517516 CHECK (user_type IN ('Artist', 'Follower')),
CONSTRAINT XPKUser PRIMARY KEY (user_ID)
);
Run Code Online (Sandbox Code Playgroud) 我的应用程序使用的是Oracle数据库,其中一个表包含一个日期列.在SQLDeveloper中进行查询时,我需要添加以下行来获取日期+小时
alter session set nls_date_format = 'DD/MM/YYYY HH24:MI:SS';
Run Code Online (Sandbox Code Playgroud)
如果我不使用它,我只会看到日期 25/11/2016
当我从我的JAVA代码执行查询时,我没有上面的行,因此每个日期都以格式返回 DD/MM/YY
JAVA
String query = "SELECT date from SCHEMA.table";
ResultSet rs = null;
try {
connection = ConnectionFactory.getConnection(Database.ORACLE);
preparedStatement = connection.prepareStatement(query);
rs = preparedStatement.executeQuery();
while (rs.next()) {
java.sql.Date dateDB = rs.getDate("date");
}
catch(SQLException e){
//error
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到小时的日期?我应该添加alter session ...到每个查询?
对于我的作业,我需要创建一个包含一个过程的包,该过程从表dwdimartist中删除所有记录,然后用表格艺术家的所有记录填充表格,并添加一个具有今天日期的字段.
这就是我创造的,它有效,但我不知道它是否具有足够的性能.使用循环遍历表艺术家中每条记录的游标是否更好?
CREATE OR REPLACE PACKAGE BODY dwh AS
PROCEDURE filldwh IS
today_date DATE := SYSDATE;
BEGIN
DELETE FROM dwdimartist;
INSERT INTO dwdimartist (artistkey, name) (SELECT artistid, name FROM artist);
UPDATE dwdimartist SET added = today_date;
END filldwh;
END dwh;
Run Code Online (Sandbox Code Playgroud) 我尝试连接到Oracle数据库时出错:
Query execution failed
Reason:
SQL Error [12705] [72000]: ORA-12705: Cannot access NLS data files or invalid environment specified
ORA-02063: preceding line
Run Code Online (Sandbox Code Playgroud)
我的平台是明显运行在Mac上的MacO,请尝试连接到远程Oracle数据库。我该如何解决这个问题?