标题:研究一下
取消只看楼主
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
结帖率:100%
 问题点数:0 回复次数:5 
研究一下
建表﹕
select * into xx from (
select '鋁' as ScrapeType,'片材' as RawMType  ,23.00   as qty union all
select '鐵'    ,'片材',799.60    union all
select '鋁'    ,'料渣',16.20    union all
select '鋼'    ,'料渣',32.00    union all
select '鐵'    ,'料渣',105.00    union all
select '鋁'    ,'料頭',1.50    union all
select '鐵'    ,'料頭',16.40    union all
select '鐵'    ,'片材',10 )dd

根據上述建立的表寫出sql 得出下面的結果
結果顯示﹕

            銅    鐵    鋁    鋼    其它
片材    0    809.6    23    0    0    
料渣     0    105    16.2    32    0
料頭    0    16.4    1.5    0    0
其它    0    0    0    0    0
搜索更多相关主题的帖子: 研究一下 
2008-11-07 09:29
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
建表﹕
select * into yy    from (select   1  as id  , 2008  as date ,  5   as qty  union all select 1,   2009 ,  4
         union all select 2 ,  2008 ,  5 union all select 2 ,  2009,   6 union all select 2 ,  2008,   7 union all select 2 ,  2009,  4 )  tt
根據上面所建立的表寫sql得出下面結果  :
id  date    qty
1   2009    4
2   2009    6

2008-11-07 10:05
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
[bo][un]happynight[/un] 在 2008-11-7 14:03 的发言:[/bo]


看不懂原始数据和最终结果之间有什么逻辑关系 详细说明下



得出日期最大和當前最大日期的最大qty   以第一列分組

[[it] 本帖最后由 西风独自凉 于 2008-11-7 15:55 编辑 [/it]]

2008-11-07 15:51
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
[bo][un]happynight[/un] 在 2008-11-7 13:59 的发言:[/bo]


很典型的交叉表问题 若使用的是2000的话
select * into #ls1 from (
select '鋁' as ScrapeType,'片材' as RawMType  ,23.00   as qty union all
select '鐵'    ,'片材',799.60    union all
select '鋁'     ...



數據一多﹐你還這樣寫﹖
這種方法不實用

2008-11-07 15:53
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
一樓答案﹕
第一種動態﹕
Declare @sql varChar(8000)
Set @sql = 'Select RawMType'
Select @sql = @sql + ',Sum(Case ScrapeType When ''' + rTrim(ScrapeType) + ''' Then Qty  End)' +rTrim(ScrapeType)+''
From (Select Distinct ScrapeType From xx) As A    
Select @sql = @sql+'  From xx  Group By RawMType'
Print @sql
Exec (@sql)

第二種(寫死了的)﹕
Select a.RawMType,Sum(Case a.ScrapeType When '銅' Then isnull(a.qty,0)  End)銅,
Sum(Case a.ScrapeType When '鐵' Then isnull(a.qty,0)  End)鐵,  
Sum(Case a.ScrapeType When '鋁' Then isnull(a.qty,0)  End)鋁 ,
Sum(Case a.ScrapeType When '鋼' Then isnull(a.qty,0)  End)鋼,
  Sum(Case a.ScrapeType When '其它' Then isnull(a.qty,0)  End)其它
 From xx a    Group By RawMType

2008-11-08 11:58
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
二樓答案﹕
Select xx.ID,xx.Date, max(xx.Qty) As Qty  From xx Inner Join (
Select ID,Max(Date) As Date From XX  Group By ID ) As A
on xx.ID=A.ID And xx.Date = A.Date Group By xx.ID,xx.Date

2008-11-08 12:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-242861-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.187546 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved