分组求和问题

fzeng554 2007-04-11 01:25:13
PRDID BQTY PRD_NO PNAME SPC DATE

PC00000058 5.0000 A22301 TS客户 5+20 35
PC00000058 5.0000 A22301 TS客户 5+20 99
PC00000079 12.0000 A22401 KH-2432 5+15 0
PC00000082 720.0000 A32997 KH-2861 NOM 0
PC00000082 360.0000 A32997 KH-2861 NOM 2
PC00000267 555.0000 A22326 KH-0701020 5+20 224
PC00000310 555.0000 A20719 KH-07012502 5+20 135

SELECT A.PRDID,SUM(A.BQTY) AS BQTY,B.PRD_NO,B.PNAME,B.SPC,ISNULL(datediff(DD, CKDATE,GETDATE()),0) AS DATE FROM PRDTCOLORONEIN A
LEFT OUTER JOIN PRDTCOLOR B ON B.PRDID = A.PRDID WHERE OUTSTATE = 0
GROUP BY A.PRDID,B.PRD_NO,B.PNAME,B.SPC,datediff(DD, CKDATE,GETDATE())

上面的答案是我用这个语句查出来的

PRDID是编码,BQTY是数量,PRD_NO是色码,PNAME是品名,SPC是规格,DATE是当天日期减去出厂日期(CKDATE)得出来的天数,我现在想要这样做,根据0-30天之内,30-60天之内,60-90天之内,90-180之内,180以后分别去求SUM(BQTY),就是让上面那些答案变成

PRDID BQTY PRD_NO PNAME SPC DATE 30 60 90

PC00000058 5.0000 A22301 TS客户 5+20 35
PC00000058 5.0000 A22301 TS客户 5+20 99
PC00000079 12.0000 A22401 KH-2432 5+15 0
PC00000082 720.0000 A32997 KH-2861 NOM 0
PC00000082 360.0000 A32997 KH-2861 NOM 2
PC00000267 555.0000 A22326 KH-0701020 5+20 224
PC00000310 555.0000 A20719 KH-07012502 5+20 135

请教这要怎么做
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fzeng554 2007-04-11
  • 打赏
  • 举报
回复
gahade(与君共勉) 多谢兄台
gahade 2007-04-11
  • 打赏
  • 举报
回复
试试

SELECT A.PRDID,
SUM(A.BQTY) AS BQTY,
B.PRD_NO,
B.PNAME,
B.SPC,
ISNULL(datediff(DD, CKDATE,GETDATE()),0) AS DATE,
sum(case when ISNULL(datediff(DD, CKDATE,GETDATE()),0) between 0 and 30 then BQTY else 0 end) as [0-30],
sum(case when ISNULL(datediff(DD, CKDATE,GETDATE()),0) between 30 and 60 then BQTY else 0 end) as [30-60],
sum(case when ISNULL(datediff(DD, CKDATE,GETDATE()),0) between 60 and 90 then BQTY else 0 end) as [60-90],
sum(case when ISNULL(datediff(DD, CKDATE,GETDATE()),0) between 90 and 180 then BQTY else 0 end) as [90-180],
sum(case when ISNULL(datediff(DD, CKDATE,GETDATE()),0)>180 then BQTY else 0 end) as [180以后]
FROM PRDTCOLORONEIN A
LEFT OUTER JOIN PRDTCOLOR B ON B.PRDID = A.PRDID
WHERE OUTSTATE = 0
GROUP BY A.PRDID,B.PRD_NO,B.PNAME,B.SPC,datediff(DD, CKDATE,GETDATE())
hyc_music1981 2007-04-11
  • 打赏
  • 举报
回复
没见结果集有什么变化呀
Godsaidlwq 2007-04-11
  • 打赏
  • 举报
回复
那总要把源表的格式给出!LZ
DATE是当天日期减去出厂日期(CKDATE)得出来的天数
没看到在上面的问题中有这方面的信息

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧