这个SQL语句怎么写

weixin_41168932 2018-01-30 10:00:23
表 shebei
产品类型 型号 串码 申请人 用户名
手机 华为P9 A000111 班组A 用户A
手机 华为P9 A000112 班组A
手机 华为M9 M000111 班组A
手机 华为P9 A000111 班组B 用户B
手机 华为P9 A000112 班组B
手机 华为M9 M000111 班组B
手机 华为M9 M000111 班组
机顶盒 华为 JD000111 班组A 用户A
机顶盒 华为 JD000112 班组A
机顶盒 中兴 ZX000117 班组A
机顶盒 中兴 ZX000116 班组B 用户B
机顶盒 中兴 ZX000115 班组B
机顶盒 中兴 ZX000114 班组B
机顶盒 中兴 ZX000113 班组
要得出 各班组 领用了多少型号的产品 其中有录入用户信息的多少台,没有录入信息的多少台?
结果表:
申请人 产品类型 型号 领用几台 有用户信息的几台 没有用户信息的几台
...全文
496 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
keueng 2018-01-31
  • 打赏
  • 举报
回复

-- 建表
IF OBJECT_ID('tempdb..#T') IS NOT NULL
	DROP TABLE #T
GO

CREATE TABLE #T
(
	产品类型	 VARCHAR(11)
	,型号		 VARCHAR(11)
	,串码		 VARCHAR(11)
	,申请人		 VARCHAR(11)
	,用户名		 VARCHAR(11)
)

INSERT INTO #T VALUES 
('手机','华为P9','A000111','班组A','用户A')
,('手机','华为P9','A000112','班组A',NULL)
,('手机','华为M9','M000111','班组A',NULL)
,('手机','华为P9','A000111','班组B','用户B')
,('手机','华为P9','A000112','班组B',NULL)
,('手机','华为M9','M000111','班组B',NULL)
,('手机','华为M9','M000111','班组',NULL)
,('机顶盒','华为','JD000111','班组A','用户A')
,('机顶盒','华为','JD000112','班组A',NULL)
,('机顶盒','中兴','ZX000117','班组A',NULL)
,('机顶盒','中兴','ZX000116','班组B','用户B')
,('机顶盒','中兴','ZX000115','班组B',NULL)
,('机顶盒','中兴','ZX000114','班组B',NULL)
,('机顶盒','中兴','ZX000113','班组', NULL)

-- 测试
SELECT	申请人
		, 产品类型
		, 型号
		, COUNT(串码) AS 领用台数
		, COUNT(用户名) AS 有用户信息台数
		, COUNT(串码) - COUNT(用户名) AS 无用户信息台数
FROM	#T
GROUP BY
		申请人
		, 产品类型
		, 型号
ORDER BY
		1;
听雨停了 2018-01-30
  • 打赏
  • 举报
回复
引用 1 楼 二月十六的回复:
--测试数据
if not object_id(N'Tempdb..#shebei') is null
drop table #shebei
Go
Create table #shebei([产品类型] nvarchar(23),[型号] nvarchar(24),[串码] nvarchar(28),[申请人] nvarchar(23),[用户名] nvarchar(23))
Insert #shebei
select N'手机',N'华为P9',N'A000111',N'班组A',N'用户A' union all
select N'手机',N'华为P9',N'A000112',N'班组A',null union all
select N'手机',N'华为M9',N'M000111',N'班组A',null union all
select N'手机',N'华为P9',N'A000111',N'班组B',N'用户B' union all
select N'手机',N'华为P9',N'A000112',N'班组B',null union all
select N'手机',N'华为M9',N'M000111',N'班组B',null union all
select N'手机',N'华为M9',N'M000111',N'班组',null union all
select N'机顶盒',N'华为',N'JD000111',N'班组A',N'用户A' union all
select N'机顶盒',N'华为',N'JD000112',N'班组A',null union all
select N'机顶盒',N'中兴',N'ZX000117',N'班组A',null union all
select N'机顶盒',N'中兴',N'ZX000116',N'班组B',N'用户B' union all
select N'机顶盒',N'中兴',N'ZX000115',N'班组B',null union all
select N'机顶盒',N'中兴',N'ZX000114',N'班组B',null union all
select N'机顶盒',N'中兴',N'ZX000113',N'班组',null
Go
--测试数据结束
SELECT 申请人 ,
产品类型 ,
型号 ,
COUNT(1) 领用几台 ,
SUM(CASE WHEN 用户名 IS NOT NULL THEN 1
ELSE 0
END) 有用户信息的几台 ,
SUM(CASE WHEN 用户名 IS NULL THEN 1
ELSE 0
END) 没有用户信息的几台
FROM #shebei
GROUP BY 申请人 ,
产品类型 ,
型号;


悟空,我猜你跟我一样都是单身,不然这么晚了哪有时间还逛论坛啊
二月十六 2018-01-30
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#shebei') is null
drop table #shebei
Go
Create table #shebei([产品类型] nvarchar(23),[型号] nvarchar(24),[串码] nvarchar(28),[申请人] nvarchar(23),[用户名] nvarchar(23))
Insert #shebei
select N'手机',N'华为P9',N'A000111',N'班组A',N'用户A' union all
select N'手机',N'华为P9',N'A000112',N'班组A',null union all
select N'手机',N'华为M9',N'M000111',N'班组A',null union all
select N'手机',N'华为P9',N'A000111',N'班组B',N'用户B' union all
select N'手机',N'华为P9',N'A000112',N'班组B',null union all
select N'手机',N'华为M9',N'M000111',N'班组B',null union all
select N'手机',N'华为M9',N'M000111',N'班组',null union all
select N'机顶盒',N'华为',N'JD000111',N'班组A',N'用户A' union all
select N'机顶盒',N'华为',N'JD000112',N'班组A',null union all
select N'机顶盒',N'中兴',N'ZX000117',N'班组A',null union all
select N'机顶盒',N'中兴',N'ZX000116',N'班组B',N'用户B' union all
select N'机顶盒',N'中兴',N'ZX000115',N'班组B',null union all
select N'机顶盒',N'中兴',N'ZX000114',N'班组B',null union all
select N'机顶盒',N'中兴',N'ZX000113',N'班组',null
Go
--测试数据结束
SELECT 申请人 ,
产品类型 ,
型号 ,
COUNT(1) 领用几台 ,
SUM(CASE WHEN 用户名 IS NOT NULL THEN 1
ELSE 0
END) 有用户信息的几台 ,
SUM(CASE WHEN 用户名 IS NULL THEN 1
ELSE 0
END) 没有用户信息的几台
FROM #shebei
GROUP BY 申请人 ,
产品类型 ,
型号;


594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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