日期:2014-05-17 浏览次数:20571 次
--表结构如下
DECLARE @A TABLE(ID INT,Name VARCHAR(50))
INSERT INTO @A(ID,Name)
SELECT 1,'张三' union all
SELECT 2,'李四' union all
SELECT 3,'王五'
DECLARE @B TABLE(ID INT,Name VARCHAR(50))
INSERT INTO @B(ID,Name)
SELECT 1,'设备1' union all
SELECT 2,'设备2'
DECLARE @C TABLE(ID INT,A_ID INT,B_ID INT) --表[A]和表[B]关系表
INSERT INTO @C(ID,A_ID,B_ID)
SELECT 100,1,1 UNION ALL --张三和设备1
SELECT 101,1,2 UNION ALL --张三和设备2
SELECT 102,2,1 --李四和设备1
--想得到如下结构
ID Name result
----------- ---- -----------------
1 张三 异常[设备1],设备2
2 李四 异常[设备1]
3 王五
/**
说明:以用户(A表)为最小单位查出每个用户关联的设备情况,
如果一个设备关联了两个或两个以上用户的的话,则在设备前添加 “异常” 字符。
先谢谢各位大神。
**/
DECLARE @A TABLE(ID INT,Name VARCHAR(50))
INSERT INTO @A(ID,Name)
SELECT 1,'张三' union all
SELECT 2,'李四' union all
SELECT 3,'王五'
DECLARE @B TABLE(ID INT,Name VARCHAR(50))
INSERT INTO @B(ID,Name)
SELECT 1,'设备1' union all
SELECT 2,'设备2'
DECLARE @C TABLE(ID INT,A_ID INT,B_ID INT) --表[A]和表[B]关系表
INSERT INTO @C(ID,A_ID,B_ID)
SELECT 100,1,1 UNION ALL --张三和设备1
SELECT 101,1,2 UNION ALL --张三和设备2
SELECT 102,2,1 --李四和设备1
select a.ID,a.Name,
isnull(stuff((select ','+case when c.err=1 then '异常['+b.Name+']'
else b.Name end
from (select x.A_ID,x.B_ID,
case when exists(select 1 from @C y
&nbs