欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

查询语句!立即给分,谢谢了!

更新时间: 2014-01-05 02:18:21 责任编辑: Author_N1

 

求一个查询语句!!--在线等,立即给分,多谢了!!
表yn,表yns,通过mainid关联,1对多关系。

表yn:

字段: mainid     desc
内容:    1         aaaaa
        2         bbbbb
        3         cccc

表yns:

字段: mainid     stage  person
内容:    1        阶段A    张三
        1        阶段B     李四
         1                   李四       
         1         fga       李四
        2        阶段A     张三
         2        阶段B     李四
         2        阶段C     王五


希望能在查询中过滤掉除了(阶段A,阶段B,阶段C)的数据,以下面的形式列出数据:

     mainid    desc   stage   person  stage     person  stage   person
      1       aaaaa   阶段A    张三      阶段B       李四
       2       bbbbb   阶段A    张三      阶段B       李四    阶段C   王五
--参考方法--
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-10-22 18:04:04
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[yn]
if object_id('[yn]') is not null drop table [yn]
go 
create table [yn]([mainid] int,[desc] varchar(5))
insert [yn]
select 1,'aaaaa' union all
select 2,'bbbbb' union all
select 3,'cccc'
--> 测试数据:[yns]
if object_id('[yns]') is not null drop table [yns]
go 
create table [yns]([mainid] int,[stage] varchar(5),[person] varchar(4))
insert [yns]
select 1,'阶段A','张三' union all
select 1,'阶段B','李四' union all
select 1,'李四',null union all
select 1,'fga','李四' union all
select 2,'阶段A','张三' union all
select 2,'阶段B','李四' union all
select 2,'阶段C','王五'
--------------开始查询--------------------------

--select * from [yns]

select a.mainid,a.[DESC],'阶段A' stage,person=MAX(CASE WHEN stage='阶段A' THEN person ELSE NULL END ),
'阶段B' stage,person=MAX(CASE WHEN stage='阶段B' THEN person ELSE NULL END ),
'阶段C' stage,person=MAX(CASE WHEN stage='阶段C' THEN person ELSE NULL END )
from [yn] a INNER JOIN [yns] b ON a.mainid=b.mainid
WHERE stage  IN ('阶段A','阶段B','阶段C')
GROUP BY a.mainid,a.[DESC]
----------------结果----------------------------
/* 
mainid      DESC  stage person stage person stage person
----------- ----- ----- ------ ----- ------ ----- ------
1           aaaaa 阶段A   张三     阶段B   李四     阶段C   NULL
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:21
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8290/
本文WWW.DOC100.NET DOC100.NET版权所有。