又一个汇总的SQL语句 ORARichard(没钱的日子......) 快来

chaoren119119 2007-07-09 04:53:32
SELECT
CASE WHEN GROUPING(data_fclb.发车日期)=1 THEN '合计' ELSE convert(varchar(10),data_fclb.发车日期,120) END 发车日期,
CASE WHEN GROUPING(data_ydxx_s.到货公司)=1 THEN '小计' ELSE data_ydxx_s.到货公司 END 到货公司,
SUM(data_ydxx_s.现付中转费) AS 现付中转费,
SUM(data_ydxx_s.未付中转费) AS 未付中转费,
SUM(data_ydxx_s.已收) AS 已收,
SUM(data_ydxx_s.提付) AS 提付,
SUM(data_ydxx_s.月结) AS 月结,
SUM(data_ydxx_s.回单结) AS 回单结
FROM data_ydxx_s INNER JOIN
data_fclb ON data_fclb.运单编号 = data_ydxx_s.运单编号
WHERE (data_fclb.发车日期 BETWEEN '2007-06-09' AND '2007-06-30')
GROUP BY data_fclb.发车日期,data_ydxx_s.到货公司 WITH ROLLUP

得出的结果是:

收货日期 到货公司现付中转费未付中转费已收 提付 月结 回单结
2007-06-09 长沙 270 0 1470 9496 0 0
2007-06-09 怀化 75 0 55 834 0 0
2007-06-09 吉首 0 0 90 350 0 0
2007-06-09 岳阳 115 0 465 2245 0 0
2007-06-09 小计 460 0 2080 12925 0 0
2007-06-10 长沙 25 2218 1272 10038 1036 0
2007-06-10 岳阳 377 0 320 2955 110 0
2007-06-10 小计 402 2218 1592 12993 1146 0
2007-06-11 长沙 165 0 2540 10378 0 0
2007-06-11 怀化 80 48 550 3279 78 0
2007-06-11 吉首 25 0 205 1270 20 0
2007-06-11 岳阳 160 35 560 3179 0 0
2007-06-11 小计 430 83 3855 18106 98 0

...

2007-06-29 长沙 162 269 2113 10116 247 0
2007-06-29 怀化 76 0 370 955 24 0
2007-06-29 吉首 0 6 70 1590 8 0
2007-06-29 岳阳 120 680 440 3959 90 0
2007-06-29 小计 358 955 2993 16620 369 0
2007-06-30 长沙 410 407 1607 6420 200 0
2007-06-30 怀化 0 114 170 1195 100 0
2007-06-30 吉首 0 18 10 125 0 0
2007-06-30 岳阳 140 46 224 2267 196 0
2007-06-30 小计 550 585 2011 10007 496 0
合计 小计 15290 16538 65983 335667 22020 150


期望的结果:

收货日期 线路 现付中转费 未付中转费 已收 提付 月结 回单结
2007-06-09 长沙 270 0 1470 9496 0 0
2007-06-09 怀化 75 0 55 834 0 0
2007-06-09 吉首 0 0 90 350 0 0
2007-06-09 岳阳 115 0 465 2245 0 0
小计 460 0 2080 12925 0 0
2007-06-10 长沙 25 2218 1272 10038 1036 0
2007-06-10 岳阳 377 0 320 2955 110 0
小计 402 2218 1592 12993 1146 0
2007-06-11 长沙 165 0 2540 10378 0 0
2007-06-11 怀化 80 48 550 3279 78 0
2007-06-11 吉首 25 0 205 1270 20 0
2007-06-11 岳阳 160 35 560 3179 0 0
小计 430 83 3855 18106 98 0

...

2007-06-29 长沙 162 269 2113 10116 247 0
2007-06-29 怀化 76 0 370 955 24 0
2007-06-29 吉首 0 6 70 1590 8 0
2007-06-29 岳阳 120 680 440 3959 90 0
小计 358 955 2993 16620 369 0
2007-06-30 长沙 410 407 1607 6420 200 0
2007-06-30 怀化 0 114 170 1195 100 0
2007-06-30 吉首 0 18 10 125 0 0
2007-06-30 岳阳 140 46 224 2267 196 0
小计 550 585 2011 10007 496 0
合计 15290 16538 65983 335667 22020 150


而且我在里面还要加一个条件我这里有7条线,但是其中有一条线路还分2个,其他6条线路就按照字段‘到货公司’分别,其中到长沙的分为直达和中转两类,按货物的终点站区分,
到货公司='长沙' and 终点站='长沙市' 属于直达按一条线路汇总,线路显示“长沙直达”
到货公司='长沙' and 终点站<>'长沙市' 属于直达按一条线路汇总,线路显示“长沙中转”
...全文
242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaoren119119 2007-07-11
  • 打赏
  • 举报
回复
不好意思,昨天没上,问题解决了
高手就是高手
ORARichard 2007-07-09
  • 打赏
  • 举报
回复
SELECT
CASE WHEN GROUPING(data_fclb.发车日期)=1 THEN '合计'
WHEN GROUPING(data_ydxx_s.到货公司)=1 THEN ''
ELSE convert(varchar(10),data_fclb.发车日期,120)
END 发车日期,
CASE WHEN GROUPING(data_ydxx_s.到货公司)=1 THEN '小计'
ELSE data_ydxx_s.到货公司
END 到货公司,
SUM(data_ydxx_s.现付中转费) AS 现付中转费,
SUM(data_ydxx_s.未付中转费) AS 未付中转费,
SUM(data_ydxx_s.已收) AS 已收,
SUM(data_ydxx_s.提付) AS 提付,
SUM(data_ydxx_s.月结) AS 月结,
SUM(data_ydxx_s.回单结) AS 回单结
FROM (SELECT 运单编号,
CASE WHEN 到货公司='长沙' and 终点站='长沙市' THEN '长沙直达'
WHEN 到货公司='长沙' and 终点站<>'长沙市' THEN '长沙中转'
END 到货公司,
终点站,
现付中转费,
未付中转费,
已收,
提付,
月结,
回单结
FROM @data_ydxx_s) data_ydxx_s INNER JOIN
@data_fclb data_fclb ON data_fclb.运单编号 = data_ydxx_s.运单编号
WHERE (data_fclb.发车日期 BETWEEN '2007-06-09' AND '2007-06-30')
GROUP BY data_fclb.发车日期,data_ydxx_s.到货公司 WITH ROLLUP
chaoren119119 2007-07-09
  • 打赏
  • 举报
回复
数据结构是:

表 data_ydxx_s

运单编号 nvarchar 50
到货公司 nvarchar 50
终点站 nvarchar 50
现付中转费 money 8
未付中转费 money 8
已收 money 8
提付 money 8
月结 money 8
回单结 money 8

表 data_fclb

发车单号 nvarchar 50
发车日期 datetime 8
运单编号 nvarchar 50


TO Haiwer(海阔天空)
我的意思你基本上看懂了,但是给的代码还是错误的
昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
长沙直达中转的问题,不知道表结构猜一下

SELECT
CASE WHEN GROUPING(发车日期)=1 THEN '合计'
WHEN GROUPING(data_fclb.到货公司)=1 THEN ''
ELSE 发车日期 END 发车日期,
CASE WHEN GROUPING(发车日期)=1 THEN ''
WHEN GROUPING(到货公司)=1 THEN '小计'
ELSE 到货公司 END 到货公司,
SUM(现付中转费) AS 现付中转费,
SUM(未付中转费) AS 未付中转费,
SUM(已收) AS 已收,
SUM(提付) AS 提付,
SUM(月结) AS 月结,
SUM(回单结) AS 回单结
FROM (
SELECT
convert(varchar(10),data_fclb.发车日期,120) 发车日期,
CASE WHEN data_fclb.到货公司='长沙' and data_fclb.终点站='长沙市' then '长沙直达'
WHEN data_fclb.到货公司='长沙' and data_fclb.终点站<>'长沙市' then '长沙中转'
else data_fclb.到货公司 END 到货公司,
data_ydxx_s.现付中转费,
data_ydxx_s.未付中转费,
data_ydxx_s.已收,
data_ydxx_s.提付,
data_ydxx_s.月结,
data_ydxx_s.回单结
FROM data_ydxx_s INNER JOIN
data_fclb ON data_fclb.运单编号 = data_ydxx_s.运单编号
WHERE (data_fclb.发车日期 BETWEEN '2007-06-09' AND '2007-06-30')
) as t
GROUP BY 发车日期,到货公司 WITH ROLLUP


昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
钻石的加得看不懂
昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
其他的先不管,帮你改格式

SELECT
CASE WHEN GROUPING(data_fclb.发车日期)=1 THEN '合计'
WHEN GROUPING(data_fclb.到货公司)=1 THEN ''
ELSE convert(varchar(10),data_fclb.发车日期,120) END 发车日期,
CASE WHEN GROUPING(data_fclb.发车日期)=1 THEN ''
WHEN GROUPING(data_fclb.到货公司)=1 THEN '小计'
ELSE data_ydxx_s.到货公司 END 到货公司,
SUM(data_ydxx_s.现付中转费) AS 现付中转费,
SUM(data_ydxx_s.未付中转费) AS 未付中转费,
SUM(data_ydxx_s.已收) AS 已收,
SUM(data_ydxx_s.提付) AS 提付,
SUM(data_ydxx_s.月结) AS 月结,
SUM(data_ydxx_s.回单结) AS 回单结
FROM data_ydxx_s INNER JOIN
data_fclb ON data_fclb.运单编号 = data_ydxx_s.运单编号
WHERE (data_fclb.发车日期 BETWEEN '2007-06-09' AND '2007-06-30')
GROUP BY data_fclb.发车日期,data_ydxx_s.到货公司 WITH ROLLUP
子陌红尘 2007-07-09
  • 打赏
  • 举报
回复
SELECT
CASE WHEN GROUPING(data_fclb.发车日期)=1 THEN '合计' ELSE convert(varchar(10),data_fclb.发车日期,120) END 发车日期,
CASE WHEN GROUPING(data_ydxx_s.到货公司)=1 THEN '小计' ELSE data_ydxx_s.到货公司 END 到货公司,
SUM(data_ydxx_s.现付中转费) AS 现付中转费,
SUM(data_ydxx_s.未付中转费) AS 未付中转费,
SUM(data_ydxx_s.已收) AS 已收,
SUM(data_ydxx_s.提付) AS 提付,
SUM(data_ydxx_s.月结) AS 月结,
SUM(data_ydxx_s.回单结) AS 回单结
FROM data_ydxx_s INNER JOIN
data_fclb ON data_fclb.运单编号 = data_ydxx_s.运单编号
WHERE (data_fclb.发车日期 BETWEEN '2007-06-09' AND '2007-06-30')
GROUP BY data_fclb.发车日期,data_ydxx_s.到货公司 WITH ROLLUP
HAVING GROUPING(收货日期)=1 or GROUPING(到货公司)=0 --试试
云飞扬77 2007-07-09
  • 打赏
  • 举报
回复
研究中……

34,872

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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