当前位置: 代码迷 >> Sql Server >> 两表联接,选择一列,列名=该行的某字段值
  详细解决方案

两表联接,选择一列,列名=该行的某字段值

热度:241   发布时间:2016-04-24 09:11:09.0
两表连接,选择一列,列名=该行的某字段值
tabA

ID A B
1  e  b
2  f  d

tabB

ID name
1  A
2  B


select myColumn from tabA left join tabB on tabA .id=tabB.id


想得到

ID myColumn 
1  e
2  d


myColumn 这列取 A表中的A列或者B列,通过B表中的name字段判断
------解决思路----------------------
--列值 无法直接关联 列名
SELECT T1.ID,T2.V
FROM tabB T1
JOIN (
SELECT ID,A AS V,'A' T FROM tabA
UNION ALL SELECT ID,B,'B' FROM tabA
) T2 ON T1.ID=T2.ID AND T1.NAME=T2.T

------解决思路----------------------
引用:
select if taba.name=b.a.columnname  then b.a else b.b as myColumn from tabA left join tabB on tabA .id=tabB.id

把if 改成case 试试
  相关解决方案