有条件的列选择
问题描述:
我是非常新的编程的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查询:http://archive.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=UNPIVOTData
如果你需要一些帮助编写该查询,发布一些关于你的表格结构的细节,我会看看。
那么你有什么尝试? (所以我们可以估计你对SQL Server的理解) – 2012-08-13 18:14:13
目前还不是很漂亮。因此,我使用与要评估的原始表中的每个列名匹配的名称来声明表。只有当原始表中的列的值不等于1时,我才在新表中插入该列。现在,我得到了20个单独的表,或者只有一列需要根据原始表的原始唯一标识进行连接。我知道有一个更简单的方法来做到这一点。 – 2012-08-13 18:28:34
你能否提供更多关于为什么而不是关于如何的细节?你的主要目标是什么?顺便说一句,你应该始终知道你的查询返回的列数... – 2012-08-13 18:32:09