SQL JOIN 来自一份数据的所有表

Nic*_*sen 0 sql-server

我正在尝试从一个数据库中的所有表中获取所有数据。我环顾四周,但找不到任何适合我当前问题的解决方案。

我制作了一个 C# 程序,为程序运行的每一天创建一个表。今天的日期的表名称将类似于 tbl18_12_2015(丹麦日期格式)。

现在,为了制作年度报告,如果我能够从存储这些报告的数据库中的所有表中获取所有数据,我会很高兴。除了格式(tblDD-MM-YYYY)之外,我无法知道会有多少张表或它们的名称。

在思考这样的事情时(这显然行不通)

SELECT * FROM DB_NAME.*
Run Code Online (Sandbox Code Playgroud)

所有表都有相同的列,其中之一是主键,自动递增。

这是一个名为 tbl17_12_2015 的表

ID  PERSONID    NAME    PAYMENT     TYPE    RESULT  TYPE

3   92545       TOM         20,5    A       NULL    NULL
4   92545       TOM         20,5    A       NULL    NULL
6   117681      LISA        NULL    NULL    207     R
Run Code Online (Sandbox Code Playgroud)

这是一个名为 tbl18_12_2015 的表

ID  PERSONID    NAME    PAYMENT TYPE    RESULT  TYPE

3   117681      LISA        30      A       NULL    NULL
4   53694       DAVID       78      A       NULL    NULL
6   58461       MICHELLE    NULL    NULL    207     R
Run Code Online (Sandbox Code Playgroud)

我想要得到的是这样的东西(来自数据库中的所有表):

PERSONID    NAME    PAYMENT     TYPE    RESULT  TYPE
92545       TOM         20,5    A       NULL    NULL
92545       TOM         20,5    A       NULL    NULL
117681      LISA        NULL    NULL    207     R
117681      LISA        30      A       NULL    NULL
53694       DAVID       78      A       NULL    NULL
58461       MICHELLE    NULL    NULL    207     R
Run Code Online (Sandbox Code Playgroud)

尝试了一些不同的查询,但没有一个返回此查询,仅返回有关表的大量信息。

提前致谢,祝节日快乐

编辑:将 tbl18_12_2015 第 3 栏标题更正为英语而不是丹麦语

感谢所有试图帮助我解决这个问题的人,但我无法(由于我的技能很可能)让 UNION 工作,所以这就是我决定重构我的数据库的原因。

Sta*_*haw 5

虽然您可以将表名存储在数据库中并使用动态 sql 将它们联合在一起,但这不是一个好主意,您甚至不应该考虑它 -现在停止!!!!

您需要做的是创建一个具有相同字段的新表 - 并添加一个 ID(自动递增标识列)和一个 DateTime 字段。然后,不必为每天创建一个新表,只需使用日期时间将数据写入该表即可。然后,您可以使用 DateTime 字段来过滤您的结果,无论您想要的是一天、一周、一月、一年、十年等的内容 - 并且您不需要动态 sql - 并且您没有 10,000 个数据库表。

我知道有些人发表了表达相同观点的评论,但是,实际上,这应该是一个答案。