关于使用SQL语句来实现小计和总计(高分求教)(300分)

  • 主题发起人 主题发起人 harrylifeng
  • 开始时间 开始时间
H

harrylifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一张表,表中有Style(varchar(10)), Controler(varchar(10)),Size(varchar(5)), Qty(int),
Height(float), IsSmart(char(1)), Remark(varchar(100))这七个字段,要求根据
Style对Control+Size来做Qty和Height的小计和总计。我写了一个SQL语句:

SELECT distinct CASE WHEN (GROUPING(Style) = 1) THEN 'TOTAL'
ELSE ISNULL(Style, 'UNKNOWN')
END AS Style,
CASE WHEN (GROUPING(Controler) = 1) THEN 'TOTAL'
ELSE ISNULL('D'+SubString(SIZE,1,1)+'('+Controler+')','UNKNOWN')
END AS Controler,
sum(QTY) as Qty, sum(height) as height,ISNULL(IsSmart,'') AS IsSmart,ISNULL(REMARK,'') AS REMARK
FROM A
GROUP BY Style, Controler, SIZE, IsSmart, REMARK WITH ROLLUP

在得到的数据集中发现数据有重复,我研究了一下,发现问题在WITH ROLLUP,它根据Style
对GROUP BY中的其他所有字段都做了小计和总计。而我只需要对Controler和Size做。
我冥思苦想也找不到解决方法。
请各位高手帮忙,多谢了!
 
通过创建临时表实现更容易
 
请问使用临时表又怎么解决呢?
我觉得这好像和建不建临时表没有关系。
哎,如果能对IsSmart, REMARK 做sum就好了。这样就不用把他们
加到Group by的子句中了。
 
什么意思,没看明白,直接用不好使吗
SELECT Style,Controler,SIZE,sum(QTY), sum(height) FROM A
GROUP BY Style, Controler, SIZE
 
to flyingdae
直接用就不能得到小计和总计。而加WITH ROLLUP则可以对之前的字段
根据第一个GROUP字段做小计和总计。
这么久了,请各位高手救救我啊!
 
通过创建临时表实现更容易
不是吗?harryli
 
接受答案了
 
后退
顶部