【发布时间】:2020-07-16 20:29:04
【问题描述】:
Azure SQL Server 2019。
我们有一个表 Table1,其中包含超过 100 列不同类型的 nvarchar 数据,所有这些都是允许的 NULL 值,并且在给定记录中可以填充 1 到 100 列。我需要制定一个查询,以降序返回按列中有多少列排序的行。
我开始使用DATALENGTH 并且必须输入每一列的名称,但我只能想象必须有一种更有效的方法。假设列名是column1、column2、column3 等,我将如何完成此操作?
【问题讨论】:
-
请确保您的问题包含minimal reproducible example,即样本数据、预期结果和您的尝试。
-
不是 sql server exprt(还!),但你不能查询 sys.columns 吗? docs.microsoft.com/en-us/sql/relational-databases/…
-
您可以旋转表格,以便每个键有 100 多个单独的行,并计算非空值并按 PK 分组。
-
@Manakin 感谢您的链接,我也绝对不是专家!
-
如果性能不是优先级,那么您可以尝试使用动态 sql 查询来组合查询。取消透视仍需要您手动列出所有 100 列。
标签: sql-server string count sql-order-by unpivot