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 终点站<>'长沙市' 属于直达按一条线路汇总,线路显示“长沙中转”
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 终点站<>'长沙市' 属于直达按一条线路汇总,线路显示“长沙中转”
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 --试试
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
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
到货公司 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(海阔天空)
我的意思你基本上看懂了,但是给的代码还是错误的
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