sql 统计数量
--原数据
;WITH TEMP AS
(
SELECT 'WES4300719103000582' SERVICE_SHEET_NO, 'WI-C300' MODEL_CODE, '8020410' SERIAL_NO, 'WI-C310' MOBILE_MODEL_CODE, '0017876'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES1200019103001546' SERVICE_SHEET_NO, 'WI-C300' MODEL_CODE, '8008351' SERIAL_NO, 'WI-C310' MOBILE_MODEL_CODE, '0016674'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES1200019103001550' SERVICE_SHEET_NO, 'WH-CH500' MODEL_CODE, '8017811' SERIAL_NO, 'WH-CH500' MOBILE_MODEL_CODE, '8018930'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES1200719110700081' SERVICE_SHEET_NO, 'NW-WS413' MODEL_CODE, '6073313' SERIAL_NO, 'NW-WS413' MOBILE_MODEL_CODE, '6117484'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES3301119091500140' SERVICE_SHEET_NO, 'WI-C600N' MODEL_CODE, '5061351' SERIAL_NO, 'WI-C600N' MOBILE_MODEL_CODE, '5080268'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES4200419091600102' SERVICE_SHEET_NO, 'WI-1000X' MODEL_CODE, '5383857' SERIAL_NO, 'WI-1000X' MOBILE_MODEL_CODE, '5463800'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES4200419091600102' SERVICE_SHEET_NO, 'WI-1000X' MODEL_CODE, '5463800' SERIAL_NO, NULL MOBILE_MODEL_CODE, NULL MOBILE_SERIAL_NO UNION ALL
SELECT 'WES2201219101900283' SERVICE_SHEET_NO, 'NW-WS623' MODEL_CODE, '5421453' SERIAL_NO, 'NW-WS623' MOBILE_MODEL_CODE, '5601874'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES2201219101900284' SERVICE_SHEET_NO, 'NW-WS623' MODEL_CODE, '5601874' SERIAL_NO, 'NW-WS623' MOBILE_MODEL_CODE, '5601875'MOBILE_SERIAL_NO UNION ALL
SELECT 'WES2201219101900285' SERVICE_SHEET_NO, 'NW-WS623' MODEL_CODE, '5601875' SERIAL_NO, 'NW-WS623' MOBILE_MODEL_CODE, '5601876'MOBILE_SERIAL_NO UNION ALL
SELECT 'TEST' SERVICE_SHEET_NO, 'TEST-WS623' MODEL_CODE, 'TEST_5421453' SERIAL_NO, NULL MOBILE_MODEL_CODE, NULL MOBILE_SERIAL_NO
),B AS
(
SELECT SERVICE_SHEET_NO,MODEL_CODE,SERIAL_NO,MOBILE_MODEL_CODE,MOBILE_SERIAL_NO FROM TEMP A
WHERE MOBILE_MODEL_CODE IS NOT NULL AND MOBILE_SERIAL_NO IS NOT NULL
--WHERE A.MODEL_CODE = 'NW-WS623' AND A.SERIAL_NO = '5421453'
UNION ALL
SELECT A.SERVICE_SHEET_NO,A.MODEL_CODE,A.SERIAL_NO,A.MOBILE_MODEL_CODE,A.MOBILE_SERIAL_NO FROM TEMP A
INNER JOIN TEMP B ON A.MODEL_CODE = B.MOBILE_MODEL_CODE AND A.SERIAL_NO = B.MOBILE_SERIAL_NO
WHERE A.MOBILE_MODEL_CODE IS NOT NULL AND A.MOBILE_SERIAL_NO IS NOT NULL
)
SELECT * FROM TEMP
--想要的结果
;WITH TEMP AS
(
SELECT 'WES4300719103000582' SERVICE_SHEET_NO,'WI-C300' MODEL_CODE,'8020410' SERIAL_NO, 'WI-C310' MOBILE_MODEL_CODE,'0017876'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'WES1200019103001546' SERVICE_SHEET_NO,'WI-C300' MODEL_CODE,'8008351' SERIAL_NO, 'WI-C310' MOBILE_MODEL_CODE,'0016674'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'WES1200019103001550' SERVICE_SHEET_NO,'WH-CH500' MODEL_CODE,'8017811' SERIAL_NO,'WH-CH500' MOBILE_MODEL_CODE,'8018930'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'WES1200719110700081' SERVICE_SHEET_NO,'NW-WS413' MODEL_CODE,'6073313' SERIAL_NO,'NW-WS413' MOBILE_MODEL_CODE,'6117484'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'WES3301119091500140' SERVICE_SHEET_NO,'WI-C600N' MODEL_CODE,'5061351' SERIAL_NO,'WI-C600N' MOBILE_MODEL_CODE,'5080268'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'WES4200419091600102' SERVICE_SHEET_NO,'WI-1000X' MODEL_CODE,'5383857' SERIAL_NO,'WI-1000X' MOBILE_MODEL_CODE,'5463800'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'WES4200419091600102' SERVICE_SHEET_NO,'WI-1000X' MODEL_CODE,'5463800' SERIAL_NO, NULL MOBILE_MODEL_CODE, NULL MOBILE_SERIAL_NO ,0 [COUNT] UNION ALL
SELECT 'WES2201219101900283' SERVICE_SHEET_NO,'NW-WS623' MODEL_CODE,'5421453' SERIAL_NO,'NW-WS623' MOBILE_MODEL_CODE,'5601874'MOBILE_SERIAL_NO ,3 [COUNT] UNION ALL
SELECT 'WES2201219101900284' SERVICE_SHEET_NO,'NW-WS623' MODEL_CODE,'5601874' SERIAL_NO,'NW-WS623' MOBILE_MODEL_CODE,'5601875'MOBILE_SERIAL_NO ,2 [COUNT] UNION ALL
SELECT 'WES2201219101900285' SERVICE_SHEET_NO,'NW-WS623' MODEL_CODE,'5601875' SERIAL_NO,'NW-WS623' MOBILE_MODEL_CODE,'5601876'MOBILE_SERIAL_NO ,1 [COUNT] UNION ALL
SELECT 'TEST' SERVICE_SHEET_NO, 'TEST-WS623' MODEL_CODE, 'TEST_5421453' SERIAL_NO, NULL MOBILE_MODEL_CODE, NULL MOBILE_SERIAL_NO ,0 [COUNT]
),B AS
(
SELECT SERVICE_SHEET_NO,MODEL_CODE,SERIAL_NO,MOBILE_MODEL_CODE,MOBILE_SERIAL_NO FROM TEMP A
WHERE MOBILE_MODEL_CODE IS NOT NULL AND MOBILE_SERIAL_NO IS NOT NULL
--WHERE A.MODEL_CODE = 'NW-WS623' AND A.SERIAL_NO = '5421453'
UNION ALL
SELECT A.SERVICE_SHEET_NO,A.MODEL_CODE,A.SERIAL_NO,A.MOBILE_MODEL_CODE,A.MOBILE_SERIAL_NO FROM TEMP A
INNER JOIN TEMP B ON A.MODEL_CODE = B.MOBILE_MODEL_CODE AND A.SERIAL_NO = B.MOBILE_SERIAL_NO
WHERE A.MOBILE_MODEL_CODE IS NOT NULL AND A.MOBILE_SERIAL_NO IS NOT NULL
)
SELECT * FROM TEMP
----MOBILE_MODEL_CODE 与 MOBILE_SERIAL_NO 有值时 对应的 MODEL_CODE与SERIAL_NO 的数量为1,否则为0
--比如 MODEL_CODE = 'NW-WS623' 与 SERIAL_NO = '5421453' 对应的数量是3,
--因为 初始是MODEL_CODE = 'NW-WS623' 与 SERIAL_NO = '5421453' 经过了 3次换机
-- 而 MODEL_CODE = 'WI-1000X' 与 SERIAL_NO = '5383857' 只有1次换机
...全文
相关推荐
SQL 统计一个数据库中所有表记录的数量
代码如下: CREATE TABLE #tmptb(tbname sysname,tbrows int ,tbREserved varchar(10),tbData varchar(10) ,tbIndexSize varchar(10),tbUnUsed varchar(10)) INSERT INTO #tmptb exec sp_MSForEachTable ‘EXEC sp_spaceused ”?”’ SELECT * from #tmptb –列出所有表的情况 SELECT tbrows ,tbname FROM #tmptb WHERE tbrows=0 –列出记录数据为0的表
数量统计接口及sql.sql
数量统计接口及sql.sql
采购件数量分组统计.sql
采购件数量分组统计
一个用来统计相同姓名人数的SQl语句
sql语句查询 表结构是这样: ID 姓名 性别 1 张三 男 2 王四 男 3 丽丽 女 4 张三 男 5 赵柳 男 6 高洁 男 7 王四 女 8 高洁 女 9 张三 女 怎么能用一条SQL语句查询出如下的结果 姓名 人员个数 男人数 女人数 包含ID 张三 3 2 1 1,4,9 王四 2 1 1 2,7 丽丽 1 0 1 3 高洁 2 1 1 6,8 赵柳 1 1 0 5 代码如下: SELECT * FROM (SELECT DISTINCT Name,Count(ID) as 人員個數, sum(case when Sex=’男’ then 1 else 0 end) as 男人
sql查询统计
sql查询统计


