如何解决计算不同列中相同值的数量
我有一个表,我想在其中计算不同列中相同值的数量。但是我还不知道如何实现它。请告诉我。
+---------+---------+---------+---------+---------+
| 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 |
+---------+-------+-------+
解决方法
您可以在此处使用联合方法:
SELECT Field1,Field AS Value,COUNT(*) AS Count
FROM
(
SELECT Field1,Field_A AS Field WHERE Field_A <> 0 FROM yourTable UNION ALL
SELECT Field1,Field_B FROM yourTable WHERE Field_B <> 0 UNION ALL
SELECT Field1,Field_C FROM yourTable WHERE Field_C <> 0 UNION ALL
SELECT Field1,Field_D FROM yourTable WHERE Field_D <> 0
) t
GROUP BY Field1,Field;
请注意,由于您有此要求,这可能意味着原始表中的四个字段列实际上属于一个列,也许还有另一个新列可以说明该列数据的类型。
,您可以使用CROSS APPLY来实现
@client.event
async def on_message(message):
if message.content.startswith('!flip '):
keyword = message.content.split('!flip ')[1]
await start(keyword,message.channel)
使用UNPIVOT的另一种方法
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 ),('Value_A',14,14 ),12,1,1 ),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
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。