我有一个关于构造查询的问题。我有5个表,其中我需要特定的数据或需要操作的数据。我需要根据这些表中的数据进行计算,但首先我需要显示包含我不需要进行任何计算的数据的列。到目前为止我所做的是我已经创建了一个临时表,并根据需要查询该表中的所有列。我的下一个任务和思考过程是创建另一个临时表并执行所有计算并填充它们,然后将两个临时表连接到一个表中。
我的问题:对于所有这些计算,有些需要基于平均值的计算,计数,总和等,总共至少有10个新列。我遇到的问题是构造一个查询,允许我从表中实现这些计算并实现我想要的结果。任何人都可以帮助这个复杂的查询和结构吗?
答案 0 :(得分:0)
数据样本可能会有所帮助。如果适用的话,我建议使用T-SQL的Window函数来进行聚合。窗口函数允许您执行这些聚合,而无需执行多个GROUP BY。当数据需要在不同的组上聚合时,这非常有用,因为它允许您在一个查询中执行所有聚合,而不必编写一个查询而不必编写多个查询,所有查询都使用不同的GROUP BY。
这是T-SQL中基本窗口函数的链接。 https://msdn.microsoft.com/en-us/library/ms189461.aspx
公共表表达式(CTE)在对数据集进行多次聚合时也非常有用,因为它们允许您更好地逻辑排序查询以提高可读性。您创建的每个CTE都可以引用在其上方创建的任何CTE,这允许您在生成最终输出之前将多个CTE链接在一起。
以下是一些基本CTE示例的链接(请参阅示例C,了解使用多个CTE)。 https://msdn.microsoft.com/en-us/library/ms175972.aspx
希望这些帮助。