选择单列匹配的单列列



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个,那么我就没有关于如何将其放在那里的想法,对不起。

相关内容

  • 没有找到相关文章

最新更新