计算不同列中相同值的数量

杰克先生0209

我有一个表,我想在其中计算不同列中相同值的数量。但我还不明白如何实现它。请告诉我。

+---------+---------+---------+---------+---------+
| Field1  | Field_A | Field_B | Field_C | Field_D |
+---------+---------+---------+---------+---------+
| Value_A |    0    | 0       | 0       | 0       |
+---------+---------+---------+---------+---------+
| Value_A |    0    | 14      | 0       | 14      |
+---------+---------+---------+---------+---------+
| Value_A |    12   | 0       | 12      | 0       |
+---------+---------+---------+---------+---------+
| Value_A |    0    | 12      | 0       | 0       |
+---------+---------+---------+---------+---------+
| Value_A |    0    | 0       | 0       | 0       |
+---------+---------+---------+---------+---------+
| Value_A |    1    | 12      | 0       | 1       |
+---------+---------+---------+---------+---------+
| Value_A |    0    | 0       | 14      | 0       |
+---------+---------+---------+---------+---------+

最后我想得到以下结果

+---------+-------+-------+
| Field_A | Value | Count |
+---------+-------+-------+
| Value_A | 12    | 4     |
+---------+-------+-------+
| Value_A | 14    | 3     |
+---------+-------+-------+
| Value_A | 1     | 2     |
+---------+-------+-------+
文卡塔拉曼

您可以使用 CROSS APPLY 来实现它

DECLARE @table table (Field1 VARCHAR(10), Field_A int,Field_B int, Field_C int, Field_D int)

INSERT INTO @table 
values
('Value_A',0    , 0       , 0       , 0      ),
('Value_A',0    , 14      , 0       , 14     ),
('Value_A',12   , 0       , 12      , 0      ),
('Value_A',0    , 12      , 0       , 0      ),
('Value_A',0    , 0       , 0       , 0      ),
('Value_A',1    , 12      , 0       , 1      ),
('Value_A',0    , 0       , 14      , 0     );

SELECT Field1,t.Field, count(*) as countOfFields  FROM @table
cross apply
(
VALUES (Field_A),(Field_B), (Field_C),(Field_D)
) as t(Field)
GROUP BY Field1, t.Field

使用 UNPIVOT 的另一种方法
SELECT Field1, val, COUNT(*) FROM @table
unpivot (val for Field in ([Field_A],[Field_B],[Field_C],[Field_D])) AS U
GROUP BY Field1, VAL

+---------+-------+---------------+
| Field1  | Field | countOfFields |
+---------+-------+---------------+
| Value_A |     0 |            19 |
| Value_A |     1 |             2 |
| Value_A |    12 |             4 |
| Value_A |    14 |             3 |
+---------+-------+---------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算列表中相同位置的不同值的数量

如何计算多个列中相同值的数量?

计算groupby r列中不同值的数量

计算结构数组中相同值的数量

如何计算列中相同结果的数量?

计算NetLogo中变量的不同值的数量

计算向量中不同值的数量

计算SQL中不同列的数量

计算熊猫行中不同列的数量

如何计算另一列中属于不同值的列中的所有相同值

一个列,用于根据 Y 列计算 X 列中不同值的数量?

如何使用python / pandas计算一列中相同的顺序值的数量?

计算numpy数组中一列中相同值的数量

计算另一列中具有相同值的对象数量

将具有相同列值的特定数量的记录插入到不同的表中

获取在“位置”列中具有相同不同值组合的 ID 数量

SQL查找列中不同值的数量

不同列中相应数量的值的总和

计算Powershell中相同单元格值的数量

Excel - 计算列中不同值数量的公式,而不考虑来自另一列的指示值

如何计算C ++ Map <Key,Values>中不同值的数量

在SQL中是否也可以计算不同值的数量?

计算包含相同文本字符串的列中的不同值

如何计算具有多个观察值/行的,在列的不同行中具有值组合的参与者的数量?

计算一列中存在的不同数量的组合

计算多列中每组的不同变量的数量?

如何为每个表计算由SQL Server中未指定数量的表共享的列中的不同值?

熊猫:在列中计算相同的值,但来自不同的索引

根据PostgreSQL中的值计算不同的列