我正在使用sql server 2008.I有2个表table1包含,
id name chk1 chk2 chk3
1 aaa 0 0 1
2 bbb 2 2 1
3 ccc 1 0 2
table2包含
chk_code chk_name flag
CH1 chk1 1
CH2 chk2 0
CH3 chk3 1
我想得到像
这样的结果集Column_Name
id
name
chk1
chk3
具有标志值0的检查不会出现在结果集中吗?
答案 0 :(得分:1)
使用此查询:
with x as (
select *
from sys.columns c
left join table2 t2 on c.name = t2.chk_name
where c.object_id = object_id('table1')
)
select name
from x
where flag = 1 or flag is null
答案 1 :(得分:0)
你可以使用unpivot实现这个...但是unpivot的问题是所有未转换的列名必须是相同数据类型的相同大小......如果可以,那么你可以像这样使用unpivot
SELECT Column_Name
FROM (SELECT *
FROM
(SELECT TOP 1 * FROM
tab1) p
UNPIVOT
(tab1 FOR Column_Name IN
([id], [name], [chk1], [chk2], [chk3])
)AS unpvt) AS vv WHERE Column_Name NOT IN
(SELECT chk_name FROM tab2 WHERE flag = 0)
上面的