Sql 条件列选择

Sql 条件列选择,sql,sql-server,Sql,Sql Server,我是一个非常新的SQL编程,可以使用一个项目的手。我有一个大约有20列的表。我需要计算15个左右具有数值属性的列,并返回值不为零的记录。前5列是我始终需要的描述性文本字段。如果具有数字属性的列没有金额为零以外的记录,我不想显示该列。值为零以外的所有列必须显示在同一结果中。提前感谢您的帮助 最好使用UNPIVOT查询将这些数字字段中的每一个作为一行返回。因此,您的结果集将如下所示: Desc1 Desc2 Desc3 Desc4 Desc5 NumFieldName NumFieldValue b

我是一个非常新的SQL编程,可以使用一个项目的手。我有一个大约有20列的表。我需要计算15个左右具有数值属性的列,并返回值不为零的记录。前5列是我始终需要的描述性文本字段。如果具有数字属性的列没有金额为零以外的记录,我不想显示该列。值为零以外的所有列必须显示在同一结果中。提前感谢您的帮助

最好使用UNPIVOT查询将这些数字字段中的每一个作为一行返回。因此,您的结果集将如下所示:

Desc1 Desc2 Desc3 Desc4 Desc5 NumFieldName NumFieldValue
blah1 blah1 blah1 blah1 blah1 Stat1        13
blah1 blah1 blah1 blah1 blah1 Stat2        22
blah1 blah1 blah1 blah1 blah1 Stat3        6
blah2 blah2 blah2 blah2 blah2 Stat1        3
blah2 blah2 blah2 blah2 blah2 Stat2        42
blah2 blah2 blah2 blah2 blah2 Stat3        12
然后可以过滤该结果,以排除NumFieldValue为0的行。以下是运行UNPIVOT查询的文档:


如果您在编写该查询时需要一些帮助,请发布一些有关表结构的详细信息,我来看看。

那么您尝试了什么?(因此我们可以估计您对SQL Server的理解)到目前为止还不太清楚。因此,我声明的表的名称与我要计算的原始表中的每个列名相匹配。仅当原始表中的列的值不是1时,我才将该列插入新表。现在我得到了20个左右的独立表,其中只有一列,我需要根据原始表的原始唯一id进行连接。我知道必须有一个更简单的方法来做这件事。你能提供更多关于为什么而不是如何做的细节吗?你的主要目标是什么?顺便说一句,您应该始终知道查询返回的列数…好的。原始表正在其他两个表之间执行对账,并显示每个记录的每列中的净差异。我只关心那些值相差不为零的列,因为它们需要额外的操作。因此,我试图略过原始对账表,只显示除零值以外没有其他值的列,这样我就可以专注于这些问题领域,而不必查看包含不必要列的大量报告。