T-SQL 计算多列中不同值的数量

Mar*_*ard 1 sql t-sql

我有一个 SQL 数据库,其中包含一个具有四个不同货币列的表,例如,我需要确定这四列中每条记录有多少种不同的货币。

记录ID 电流1 电流2 电流3 电流4 货币计数
1 英镑 美元 英镑 英镑 2
2 英镑 欧元 英镑 美元 3
3 英镑 英镑 英镑 英镑 1
4 英镑 英镑 英镑 欧元 2

如何确定每条记录的“CurrencyCount”/货币数量?我不知道如何解决这个问题

感谢您的任何帮助

Mar*_*ith 5

您可以使用表值构造函数引用外行中的列,然后COUNT (DISTINCT- 无需任何扩展和折叠GROUP BY

SELECT *,
       CurrrencyCount = (SELECT COUNT (DISTINCT Currency) FROM   (VALUES (CURR1), (CURR2), (CURR3), (CURR4)) AS x (Currency))
FROM   YourTable
Run Code Online (Sandbox Code Playgroud)