sql语句请教

joeweng 2018-03-13 03:25:24
订单,供应商,数量
P01,A,100
P02,A,200,
P03,B,20
P04,A,40

如何一条SQL就能按供应商统计有多少张订单和数量汇总?
...全文
259 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2018-03-13
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([订单] nvarchar(23),[供应商] nvarchar(21),[数量] int)
Insert #T
select N'P01',N'A',100 union all
select N'P02',N'A',200 union all
select N'P03',N'B',20 union all
select N'P04',N'A',40
GO
if not object_id(N'Tempdb..#T2') is null
drop table #T2
Go
Create table #T2([订单] nvarchar(24),[收退货] nvarchar(22),[数量] int)
Insert #T2
select N'P01',N'收货',30 union all
select N'P01',N'收货',50 union all
select N'P01',N'退货',20 union all
select N'P02',N'收货',90
Go
--测试数据结束
SELECT [供应商] ,
COUNT(DISTINCT 订单) AS 订单数量 ,
SUM(数量) AS 数量汇总,
SUM(收货次数) 收货次数,
SUM(收货数量) 收货数量,
SUM(退货次数) 退货次数,
SUM(退货数量) 退货数量
FROM ( SELECT #T.* ,
ISNULL(t.收货次数, 0) AS 收货次数 ,
ISNULL(t.收货数量, 0) AS 收货数量 ,
ISNULL(t.退货次数, 0) AS 退货次数 ,
ISNULL(t.退货数量, 0) AS 退货数量
FROM #T
LEFT JOIN ( SELECT 订单 ,
SUM(CASE WHEN 收退货 = '收货' THEN 1
ELSE 0
END) AS 收货次数 ,
SUM(CASE WHEN 收退货 = '收货' THEN 数量
ELSE 0
END) AS 收货数量 ,
SUM(CASE WHEN 收退货 = '退货' THEN 1
ELSE 0
END) AS 退货次数 ,
SUM(CASE WHEN 收退货 = '退货' THEN 数量
ELSE 0
END) AS 退货数量
FROM #T2
GROUP BY 订单
) t ON t.订单 = #T.订单
) t1
GROUP BY [供应商]




joeweng 2018-03-13
  • 打赏
  • 举报
回复
厉害! DISTINCT 是不是只能用一列,如果是多列的话要怎么处理? 比如, 订单,供应商,数量 P01,A,100,20 P02,A,200, P03,B,20 P04,A,40 收货表 订单,收退货,数量 P01,收货,30 P01,收货,50 P01,退货,20 P02, 收货,90 如果需要统计 供应商,订单,收货资料,收货数量,退货次数,退货数量 这个需要怎么处理?一句能实现吗?
二月十六 版主 2018-03-13
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([订单] nvarchar(23),[供应商] nvarchar(21),[数量] int)
Insert #T
select N'P01',N'A',100 union all
select N'P02',N'A',200 union all
select N'P03',N'B',20 union all
select N'P04',N'A',40
Go
--测试数据结束
SELECT [供应商] ,
COUNT(DISTINCT 订单) AS 订单数量 ,
SUM(数量) AS 数量汇总
FROM #T
GROUP BY [供应商]


34,594

社区成员

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

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