2014-02-25 44 views
0

我得到這個錯誤,怎麼了? 這是查詢:vertica - 錯誤4286:運算符不存在:date = int

dbvertica=> select Sum(dbvertica.LINEORDER.l_extendedprice*dbvertica.LINEORDER.l_discount) as revenue from 
dbvertica.LINEORDER, dbvertica.DATE where dbvertica.LINEORDER.l_orderdate = 
dbvertica.DATE.d_datekey and dbvertica.DATE.d_year = '1993' and 
dbvertica.LINEORDER.l_discount between 1 and 3 and dbvertica.LINEORDER.l_quantity < 25; 

,而這些都是表:

CREATE TABLE dbvertica.PART (P_PARTKEY INTEGER NOT NULL, P_NAME VARCHAR(22) NOT NULL, P_MFGR CHAR(6) NOT NULL, P_CATEGORY CHAR(7) NOT NULL,P_BRAND CHAR(9) NOT NULL, P_COLOR VARCHAR(11) NOT NULL, P_TYPE VARCHAR(25) NOT NULL, P_SIZE INTEGER NOT NULL, P_CONTAINER CHAR(10) NOT NULL); 

CREATE TABLE dbvertica.SUPPLIER (S_SUPPKEY  INTEGER NOT NULL, S_NAME CHAR(25) NOT NULL, S_ADDRESS VARCHAR(25) NOT NULL, S_CITY CHAR(10) NOT NULL, S_NATION VARCHAR(15) NOT NULL, S_REGION VARCHAR(12) NOT NULL, S_PHONE CHAR(15) NOT NULL); 

CREATE TABLE dbvertica.LINEORDER (L_ORDERKEY INTEGER NOT NULL, L_LINENUMBER INTEGER NOT NULL, L_CUSTKEY INTEGER NOT NULL, L_PARTKEY INTEGER NOT NULL, L_SUPPKEY INTEGER NOT NULL, L_ORDERDATE DATE NOT NULL, L_ORDERPRIORITY CHAR(15) NOT NULL, L_SHIPPRIORITY INTEGER NOT NULL,L_QUANTITY DECIMAL(15,2) NOT NULL, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL, L_ORDTOTALPRICE  DECIMAL(15,2) NOT NULL, L_DISCOUNT DECIMAL(15,2) NOT NULL, L_REVENUE DECIMAL(15,2) NOT NULL, L_SUPPLYCOST DECIMAL(15,2)NOT NULL, L_TAX   DECIMAL(15,2) NOT NULL,L_COMMITDATE DATE NOT NULL,L_SHIPMODE  CHAR(10) NOT NULL); 

CREATE TABLE dbvertica.CUSTOMER (C_CUSTKEY INTEGER NOT NULL,C_NAME VARCHAR(25) NOT NULL, C_ADDRESS VARCHAR(25) NOT NULL,C_CITY CHAR(10) NOT NULL, C_NATION CHAR(15) NOT NULL,C_REGION CHAR(12) NOT NULL,C_PHONE CHAR(15) NOT NULL,C_MKTSEGMENT CHAR(10) NOT NULL); 

CREATE TABLE dbvertica.DATE (D_DATEKEY INTEGER NOT NULL, D_DATE CHAR(18) NOT NULL, D_DAYOFWEEK CHAR(8) NOT NULL, D_MONTH CHAR(9) NOT NULL, D_YEAR INT NOT NULL, D_YEARMONTHNUM INT NOT NULL, D_YEARMONTH CHAR(7) NOT NULL, D_DAYNUMINWEEK INT NOT NULL, D_DAYNUMINMONTH INT NOT NULL, D_DAYNUMINYEAR INT NOT NULL, D_MONTHNUMINYEAR INT, D_WEEKNUMINYEAR INT, D_SELLINGSEASON VARCHAR(12) NOT NULL, D_LASTDAYINWEEKFL BOOLEAN NOT NULL, D_LASTDAYINMONTHFL BOOLEAN NOT NULL, D_HOLIDAYFL BOOLEAN NOT NULL, D_WEEKDAYFL BOOLEAN NOT NULL); 

回答

1

你的問題是在這行:

dbvertica.LINEORDER.l_orderdate = dbvertica.DATE.d_datekey 

dbvertica.LINEORDER.l_orderdate是類型date and dbvertica.DATE.d_datekeyint

你需要像這樣:

select 
Sum(dbvertica.LINEORDER.l_extendedprice*dbvertica.LINEORDER.l_discount) as revenue from 
dbvertica.LINEORDER, 
dbvertica.DATE 
where 
**TO_CHAR(dbvertica.LINEORDER.l_orderdate) = dbvertica.DATE.d_datekey** 
and dbvertica.DATE.d_year = '1993' 
and dbvertica.LINEORDER.l_discount between 1 and 3 
and dbvertica.LINEORDER.l_quantity < 25;