首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

!交叉表的有关问题!

2012-03-09 
!!!!交叉表的问题!!!!表tb1mtrlNametotalPriceIndeptdate物品11002005-01-05物品12002005-01-29物品115020

!!!!交叉表的问题!!!!
表     tb1

mtrlName             totalPrice               Indeptdate
物品1                       100                             2005-01-05
物品1                       200                             2005-01-29
物品1                       150                             2005-08-06
物品2                       98                               2005-05-18
物品2                       101                             2005-03-09


.......................

结果想要:

月份                           mtrlName               totalPrice
1月                                 物品1                       300
...                                 ...                           ...
12月                               物品1                       ...      
1月                                 物品2                       ...    
...                                 ...                           ...
12月                               物品2                       ...

能不能实现.用哪种方法实现好.

[解决办法]
select to_char(Indeptdate, 'yyyy-mm '),mtrlName,sum(totalPrice)
group by to_char(Indeptdate, 'yyyy-mm '),mtrlName;
[解决办法]
兄台,你的问题不是交叉表问题
----------------------------
一,先建立一表 yearmonth

monthname startdate enddate mtrlName
1月 2007-01-01 2007-01-31 物品1
2月 2007-02-01 2007-02-28 物品2
……
……
12月 2007-01-01 2007-12-31 物品n
二,查询
SELECT yearmonth.monthname,
yearmonth.mtrlName,
SUM(NVL(tb1.totalprice,0)) AS totalprice
FROM yearmonth LEFT JOIN tb1
ON yearmonth.mtrlName = tb1.mtrlName
AND yearmonth.startdate <= tb1.Indeptdate
AND yearmonth.enddate > = tb1.Indeptdate




[解决办法]
GROUP BY yearmonth.monthname,yearmonth.mtrlName
[解决办法]
select to_char(tb1.Indeptdate, 'mm '),tb1.mtrlName,sum(tb1.totalPrice) from tb1
group by to_char(tb1.Indeptdate, 'yyyy '),to_char(tb1.Indeptdate, 'mm ');

热点排行