【问题标题】:How to join a column from another table to a new table you wish to display如何将另一个表中的列连接到要显示的新表
【发布时间】:2014-07-27 00:22:11
【问题描述】:

我目前正在开发一个数据库,我试图在数据库中查找所有事务类型表(其中表名不以 _Result 或 _ History 开头),然后显示每个表在一个数据库模型的计算。

找出这一点的目的是确定计算中最重要的表,以便这些特定的表在更新统计信息时具有优先权。

目前我正在使用两个表。 1) 第一个名为 tmpCalcSources 的表显示了数据库中所有源表的名称(名为“Source”的列)以及与之关联的计算 ID(名为“CalculationID”的列) 2) 名为 tmpCalcSourceRows 的第二个表显示了源表名称(名为 'TableName' 的列)以及与每个源表关联的行数(名为 'RowNum' 的列)

我目前有这个查询:

选择来源,

COUNT(CalculationID) AS NumberOfUses

来自 tmpCalcSources

WHERE Source not like '%_Result%'

按来源分组

按使用次数 DESC 排序;

以上查询为我提供了下表:

plPeriods 292

pl措施 10

时间 43

等等……

我现在正尝试在上表中再添加一件事。我希望它还显示每个表中包含的行数(所以是另一列)。我想从 tmpCalcSourceRows 表中获取列 'RowNum' 并能够在上面显示的表中显示它。

【问题讨论】:

  • 我认为您的数据不正确。该查询不应导致该表。 Sum(1) 将计算您的查询组合在一起的行数,但我不知道这是否会有所帮助,因为我不明白您在问什么。
  • 我什么都不懂,但是您可以将查询拆分为两个单独的公用表表达式,然后进行简单的连接。
  • 您是否对查询的结果进行了透视并删除了列标签?否则,您的查询结果与您提供的查询不匹配。另一张桌子叫什么名字?您是说可以使用 TableName 列与 tmpCalcSources.Source 连接另一个表吗?

标签: sql sql-server count inner-join


【解决方案1】:

这是你要找的吗:

select
  Source
, NumberOfUses
, numberofrows
from (
    SELECT Source,COUNT(CalculationID) AS NumberOfUses
    FROM tmpCalcSources
    WHERE Source not like '%_Result%'
    GROUP BY Source
    ) tableUses
    join numRowsTable on numRowsTable.TableName=tableUses.Source
ORDER BY NumberOfUses DESC; 

【讨论】:

  • 是的,这个查询运行良好,它将 numberofrows 列添加到我想要显示的内容中。然而,我收到了一张表格:plPeriods 292 104 plPeriods 292 104 plPeriods 292 104 plMeasures 200 147 plMeasures 200 147 plMeasures 200 147 信息是正确的,但是由于某种原因,源名称被重复。
  • 它显示 Source Name 行的次数似乎与 CalculationID 值相同,对于 plPeroids 为 292。
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多