i有一个具有多个具有ID的列的表,我需要从一列匹配的一列中获取信息。
tblA
colA | colB | colC | colD
1 5 6 7
2 5 5 8
3 7 8 9
4 8 8 9
有没有一种方法可以选择A列A列B,列C和D列D等于A的数字,但是将它们保存在其列中?
基本上,如果我要寻找的" 5"在表A列B,C和D上,它将返回以下内容:
colB | colC | colD
1 2
2
这是否涵盖了您的预期结果?
create table tblA(id int, colA int, colB int, colC int, colD int); insert into tblA values (1, 1, 5, 6, 7), (2, 2, 5, 5, 8), (3, 3, 7, 8, 9), (4, 4, 8, 8, 9); GO
4行影响
select sum(iif(colA=5, 1, 0)) over (order by id) colA, sum(iif(colB=5, 1, 0)) over (order by id) colB, sum(iif(colC=5, 1, 0)) over (order by id) colC, sum(iif(colD=5, 1, 0)) over (order by id) colD from tblA where colA=5 or colB=5 or colC=5 or colD=5; GO
可乐|Colb |Colc |寒冷的---:|---:|---:|---:: 0 |1 |0 |0 0 |2 |1 |0
dbfiddle在这里
如果您不介意这样的结果:
colB | colC | colD
1 NULL NULL
2 2 NULL
此查询将为数字5:
提供问题SELECT CASE WHEN colB = 5 THEN ColA ELSE NULL END as colB,
CASE WHEN colC = 5 THEN ColA ELSE NULL END as colC,
CASE WHEN colD = 5 THEN ColA ELSE NULL END as colD
FROM YourTable yt
WHERE yt.colB = 5 OR yt.colC = 5 OR yt.colD = 5
现在,如果您想在第一行中的Colc中的2个,那么我就没有关于如何将其放在那里的想法,对不起。