594
社区成员
发帖
与我相关
我的任务
分享
-- 建表
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;
--测试数据
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 申请人 ,
产品类型 ,
型号;