【问题标题】:Selecting limited results from two tables从两个表中选择有限的结果
【发布时间】:2020-03-02 19:47:05
【问题描述】:

如果之前有人问过这个问题,我深表歉意。我仍然不确定如何为标题提出我的问题,所以不确定要搜索什么。

我在同一个实例中有大约一百个数据库,每个客户都有一个,以客户命名,并且它们都具有相同的结构。我想选择一个结果集,其中包括数据库名称以及其中一个表中的最新日期条目。我可以从 sys.databases 中提取数据库名称,但是对于每个数据库,我想从 Events.Date_Logged 中选择最近的日期,以便我的结果集如下所示:

 _______________________________
|               |               |
|Cust_Name      |Latest_Event   |
|_______________|_______________|
|               |               |
|Customer1      |01/02/2020     |
|_______________|_______________|
|               |               |
|Customer2      |02/02/2020     |
|_______________|_______________|
|               |               |
|Customer3      |03/02/2020     |
|_______________|_______________|

不过,我真的在语法上苦苦挣扎。我要么只返回一行,要么为每个客户返回每个事件。我认为我的连接已经生锈了。

任何帮助将不胜感激。

【问题讨论】:

  • 不确定没有理由不尝试。在考虑发布之前,请始终在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,带有和不带有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。除非我们努力(重新重新)写清楚,否则我们无法推理、交流或搜索。
  • 请展示您的尝试。请不要要求我们为您编写代码。请在代码问题中给出minimal reproducible example--cut & paste & runnable code;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)How to Ask 适用于包含 DBMS 和 DDL 的 SQL,其中包括约束、索引和表格初始化。

标签: sql sql-server join select


【解决方案1】:

我建议你做什么:

  1. 声明一个结果变量(表类型)
  2. 使用游标遍历每个数据库
  3. 在光标内:执行 select top 1 ... order by date desc 以获取最新记录。将此结果保存在结果变量中。
  4. 在光标后打印结果变量。

这应该可以解决问题。

【讨论】:

  • 谢谢,梅丽莎。这不会为循环的每次迭代(即每个数据库)创建一个单独的结果集吗?我需要一个结果集中的所有结果。
  • 如果您在光标之前创建表变量并将所有结果插入该变量 -> 在光标之后将有 1 个变量包含所有结果。
  • 非常感谢。会试一试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多