SQL 数据库疑难解决方案集合

来源:互联网 发布:拓普康全站仪usp软件 编辑:程序博客网 时间:2024/05/21 10:09

SQL拆分数据:


请问大家能否把图中两条记录用SQL语句,拆分为4条,也就是查询出来有12条记录,谢谢!
(拆分的依据是S1,S2,S3,S4中有没有数量,有的话独立开来),求救!!!
比如这两条记录用SQL语句拆分以后是这种格式:
比如:arrival_id    manual_id    supply_no warehouse_no    goods_no   colorid    long   s1  s2  s3 s4
           123456        abcd              123a                 kkk                    fff                  ddd         0         0    5    0   0
           123456        abcd              123a                 kkk                    fff                  ddd         0         0    0    9   0
           123456        abcd              123a                 kkk                    zzz               ddd         0         0    4    0   0
           123456        abcd              123a                 kkk                    zzz               ddd         0         0    0    1   0

解决方案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DECLARE @TBL TABLE(
arrival_id  INT,
manual_id  VARCHAR(99),
supply_no VARCHAR(99),
warehouse_no VARCHAR(99),
goods_no VARCHAR(99),
colorid VARCHAR(99),
long INT,
s1 INT,
s2 INT,
s3 INT,
s4 INT);
 
INSERT INTO @TBL VALUES(123456,'abcd','123a','kkk','fff','ddd',0,0,5,9,0),
                       (123456,'abcd','123a','kkk','fff','ddd',0,0,4,1,0);
 
;WITH CTE AS
(
SELECT arrival_id,manual_id,supply_no,warehouse_no,goods_no,colorid,long,value,s From @TBL
unpivot
([value] for in
([s1],[s2],[s3],[s4]) )as T
)
SELECT arrival_id,manual_id,supply_no,warehouse_no,goods_no,colorid,long,
CASE  WHEN S='s1' then value else end  as S1,
CASE  WHEN S='s2' then value else end  as S2,
CASE  WHEN S='s3' then value else end  as S3,
CASE  WHEN S='s4' then value else end  as S4
FROM CTE WHERE value <>0




2:

Left join 后,想把获取的值放在一起 

表A,
ID , Name,
1,张三
2,李四

表B,
Name, Remark
张三, AAA
张三,BBB
李四, AAA

最后想得到结果,
ID , Name,Remark
1,张三, (AAA,BBB)
2,李四, AAA
解决办法:
SELECT ID,Name
    ,STUFF((
        SELECT ','+Remark
        FROM B T2
        WHERE T1.Name=T2.Name
        FOR XML PATH('')
    ),1,1,'')AS Remark
FROM A T1


0 0
原创粉丝点击