【发布时间】:2021-10-20 03:02:48
【问题描述】:
我目前有一个表格填充了数天的数据。 这些日期被设置为数据表中的列,因此我需要取消透视表以执行相关查询。
选择所有以2020%开头的列的最简单方法是什么
我使用了以下 Q&A Selecting all columns that start with XXX using a wildcard? 来创建一个包含我需要的所有列的单独表格
SELECT [COLUMN_NAME]
FROM INFORMATION_SCHEMA.COLUMNS
WHERE [TABLE_NAME] = 'Table_Name'
AND [COLUMN_NAME] LIKE '2020%'
GO
但不确定如何使用此辅助表来简化我最初的问题。
【问题讨论】:
-
阅读prepared statements。在 SQL 中执行它们可能会有些尴尬,因此您可以使用第一个查询的结果在代码中组装查询,而不是全部在 SQL 中完成,但无论哪种方式,您都可以动态编写包含所需特定列的 SQL。
-
您确定是 SQL Server,而不是 MySQL?因为
information_schema与 MySQL 相关。 -
@MarcusViniciusPompeu
information_Schema是标准 SQL,在 SQL Server 中受支持。此外,使用方括号 ([/]) 建议使用 SQL Server。在 MySql 中,您将使用`。 -
您的数据模型似乎已损坏。不要为每个日期使用不同的列,而是为每个日期使用不同的行。
-
@ZoharPeled,你是对的。我的错。
标签: sql sql-server unpivot