当前位置: 技术问答>java相关
请教一条SQL语句。
来源: 互联网 发布时间:2015-01-22
本文导语: oracle数据库: 表:history 字段: 说明 列名 类型 货品ID ProductID Number(8) 日期 PName date 最大数 PMax Number(12,2) 最小数 PMi...
oracle数据库:
表:history
字段:
说明 列名 类型
货品ID ProductID Number(8)
日期 PName date
最大数 PMax Number(12,2)
最小数 PMin Number(12,2)
开盘价 Oprice Number(12,2)
收盘价 Cprice Number(12,2)
这条SQL要求取出,每个星期的最大数,最小数,星期一的开盘价,和星期天的收盘价。注意是每个星期要取出这四个数据。先谢谢帮我解答的人!请了请了。
表:history
字段:
说明 列名 类型
货品ID ProductID Number(8)
日期 PName date
最大数 PMax Number(12,2)
最小数 PMin Number(12,2)
开盘价 Oprice Number(12,2)
收盘价 Cprice Number(12,2)
这条SQL要求取出,每个星期的最大数,最小数,星期一的开盘价,和星期天的收盘价。注意是每个星期要取出这四个数据。先谢谢帮我解答的人!请了请了。
|
TO_CHAR(A.PNAME,'D')
1是星期天
2是星期一
TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
取本周
SELECT MAX(a.PMAX), MIN(a.PMIN),CPRICE, OPRICE
FROM HISTORY a,
WHERE TO_CHAR(a.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
TO_CHAR(A.PNAME,'D') = '1'
TO_CHAR(B.PNAME,'D') = '2'
1是星期天
2是星期一
TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
取本周
SELECT MAX(a.PMAX), MIN(a.PMIN),CPRICE, OPRICE
FROM HISTORY a,
WHERE TO_CHAR(a.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
TO_CHAR(A.PNAME,'D') = '1'
TO_CHAR(B.PNAME,'D') = '2'
|
SELECT A.CPRICE,B.OPRICE FROM HISTORY A,HISTORY B WHERE TO_CHAR(A.PNAME,'D') = '1' AND A.PRODUCTID='00000001' AND TO_CHAR(A.PNAME-7,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
AND TO_CHAR(B.PNAME,'D') = '2' AND A.PRODUCTID='00000001' AND TO_CHAR(B.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
SELECT MAX(PMAX), MIN(PMIN) FROM HISTORY WHERE PRODUCTID='00000001' AND TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
这是取本周的,我用了两条.请高手将一条的写出.
AND TO_CHAR(B.PNAME,'D') = '2' AND A.PRODUCTID='00000001' AND TO_CHAR(B.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
SELECT MAX(PMAX), MIN(PMIN) FROM HISTORY WHERE PRODUCTID='00000001' AND TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW')
这是取本周的,我用了两条.请高手将一条的写出.
|
SELECT
A.CPRICE,
B.OPRICE,
c.PMAX,
F.PMIN
FROM
HISTORY A,
HISTORY B ,
history c,
HISTORY F
WHERE
A.CPRICE IN ( SELECT CPRICE FROM HISTORY D WHERE TO_CHAR(D.PNAME,'D') = '1' AND TO_CHAR(D.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW') )
AND B.OPRICE IN ( SELECT OPRICE FROM HISTORY E WHERE TO_CHAR(E.PNAME,'D') = '2' AND TO_CHAR(E.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW') )
AND C.PMAX IN (SELECT MAX(PMAX) FROM HISTORY WHERE TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW'))
AND F.PMAX IN (SELECT MIN(PMIN) FROM HISTORY WHERE TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW'))
A.CPRICE,
B.OPRICE,
c.PMAX,
F.PMIN
FROM
HISTORY A,
HISTORY B ,
history c,
HISTORY F
WHERE
A.CPRICE IN ( SELECT CPRICE FROM HISTORY D WHERE TO_CHAR(D.PNAME,'D') = '1' AND TO_CHAR(D.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW') )
AND B.OPRICE IN ( SELECT OPRICE FROM HISTORY E WHERE TO_CHAR(E.PNAME,'D') = '2' AND TO_CHAR(E.PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW') )
AND C.PMAX IN (SELECT MAX(PMAX) FROM HISTORY WHERE TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW'))
AND F.PMAX IN (SELECT MIN(PMIN) FROM HISTORY WHERE TO_CHAR(PNAME,'YYYYMMW')=TO_CHAR(SYSDATE,'YYYYMMW'))