查询结果
ID value1 value2
1 1 1
1 1 2
1 1 3
1 1 4
1 2 11
1 2 12
1 2 13
1 2 14
1 3 21
1 3 22
1 3 23
1 3 24
2 1 1
2 1 2
2 1 3
2 1 4
2 2 11
2 2 12
2 2 13
2 2 14
2 3 21
2 3 22
2 3 23
2 3 24
怎么统计筛选 value2 中包含 1 and 包含12或13的ID数量 并按 ID中 分别包含 21,22,23,24 的方式列出结果
如:
数量 value2
ID数量 21
ID数量 22
ID数量 23
ID数量 24
ID value1 value2
1 1 1
1 1 2
1 1 3
1 1 4
1 2 11
1 2 12
1 2 13
1 2 14
1 3 21
1 3 22
1 3 23
1 3 24
2 1 1
2 1 2
2 1 3
2 1 4
2 2 11
2 2 12
2 2 13
2 2 14
2 3 21
2 3 22
2 3 23
2 3 24
怎么统计筛选 value2 中包含 1 and 包含12或13的ID数量 并按 ID中 分别包含 21,22,23,24 的方式列出结果
如:
数量 value2
ID数量 21
ID数量 22
ID数量 23
ID数量 24
value2 中 包含 1 且 包含 12 或者 13
然后再这个条件上 分别统计 value =21 的ID数量 value=22 的ID数量
value =23 的ID数量 value=24 的ID数量
这下可以明白了吗?
declare @t table (ID int,value1 int,value2 int)
insert @t select 1 ,1, 1 union all
select 1 ,1, 2 union all
select 1 ,1, 3 union all
select 1 ,1, 4 union all
select 1 ,2, 11 union all
select 1 ,2, 12 union all
select 1 ,2 ,13 union all
select 1 ,2, 14 union all
select 1 ,3, 21 union all
select 1 ,3, 22 union all
select 1 ,3, 23 union all
select 1 ,3, 24 union all
select 2 ,1, 1 union all
select 2 ,1, 2 union all
select 2 ,1, 3 union all
select 2 ,1, 4 union all
select 2 ,2, 11 union all
select 2 ,2, 12 union all
select 2 ,2, 13 union all
select 2 ,2, 14 union all
select 2 ,3, 21 union all
select 2 ,3 ,22 union all
select 2 ,3 ,23 union all
select 2 ,3, 24
select count(ID) as id,value2
from @t a
where value2 in(21,22,23,34)
and exists(select 1 from @t where a.id=id and value2=1)
and exists(select 1 from @t where a.id=id and value2 in(12,13))
group by value2
(24 行受影响)
id value2
----------- -----------
2 21
2 22
2 23(3 行受影响)
好了给分结贴 呵呵
然后再这个条件上 分别统计 value =21 的ID数量 value=22 的ID数量
value =23 的ID数量 value=24 的ID数量
这下可以明白了吗?
----------
红色的value是哪个?
if object_id('[TB]') is not null drop table [TB]
create table [TB]([ID] int,[value1] int,[value2] int)
insert [TB]
select 1,1,1 union all
select 1,1,2 union all
select 1,1,3 union all
select 1,1,4 union all
select 1,2,11 union all
select 1,2,12 union all
select 1,2,13 union all
select 1,2,14 union all
select 1,3,21 union all
select 1,3,22 union all
select 1,3,23 union all
select 1,3,24 union all
select 2,1,1 union all
select 2,1,2 union all
select 2,1,3 union all
select 2,1,4 union all
select 2,2,11 union all
select 2,2,12 union all
select 2,2,13 union all
select 2,2,14 union all
select 2,3,21 union all
select 2,3,22 union all
select 2,3,23 union all
select 2,3,24select * from [TB]
WITH TT
AS(
SELECT value2,[Count]=COUNT(id)
FROM dbo.tb
WHERE value2 LIKE '%1%' OR value2 LIKE '%12%' OR value2 LIKE '%13%'
GROUP BY value2)SELECT * FROM TT WHERE value2 IN ('21','22','23','24')/*
value2 Count
21 2*/
??? 还是没明白,这样???
select count(ID) as id,value2
from @t a
where value2 in(21,22,23,24)
and exists(select 1 from @t where a.id=id and value2=1)
and exists(select 1 from @t where a.id=id and value2 in(12,13))
group by value2