读书人

SQL大大大难题…分类检索解决思路

发布时间: 2012-06-10 14:03:15 作者: rapoo

SQL大大大难题……分类检索
SQL大大难题啊,都愁白了我好几根头发,希望各位不吝赐教!问题如下:表A中的class字段中,前三行分别存有1 2 1,2 现在要和表B中的Type做关联,分别检索错1,2,3,4,……各种类别中都有多少数据,可是表A中的第三行,存有2个类别(最多的一条记录存了20个类别);那现在该怎么做关联,分类检索各个类别的总数据条数呢???

[解决办法]
select 1 as col,count(*) cnt
from tb
where charindex(',1,',','+typecol+',') > 0
[解决办法]
A 表:
id class
11
22
31,2
41,3
52,3,4
65

B 表:
id type
11
22
33
44
55
66

结果集:
type 个数
13
23
32
41
51
60

语句:
select B.type,(select COUNT(*) from A where CHARINDEX(B.TYPE,A.CLASS,0)>0) from B
[解决办法]

SQL code
CREATE TABLE 类别表(    id VARCHAR(10),    name VARCHAR(10),    value INT)GOINSERT INTO 类别表SELECT '001', '类别0', 0 UNIONSELECT '002', '类别1', 1 UNIONSELECT '003', '类别2', 2 UNIONSELECT '004', '类别3', 3 UNIONSELECT '005', '类别4', 4GOCREATE TABLE 数据表(    id VARCHAR(10),    typeValue VARCHAR(100))GOINSERT INTO 数据表SELECT '0001', '2' UNIONSELECT '0002', '0' UNIONSELECT '0003', '3' UNIONSELECT '0004', '0,2' UNIONSELECT '0005', '0,1,2'GOSELECT A.ID,name,value,COUNT(1) AS NumFROM 类别表 AS A INNER JOIN 数据表 AS B ON CHARINDEX(',' + CAST(A.value AS VARCHAR(10)) + ',',',' + B.typeValue + ',') > 0GROUP BY A.ID,name,valueID    name    value    Num001    类别0    0    3002    类别1    1    1003    类别2    2    3004    类别3    3    1 

读书人网 >SQL Server

热点推荐