【发布时间】:2018-03-13 01:23:11
【问题描述】:
亚行表
今天日期
我有一张 ADB 表。我想根据系统日期提取列名
我目前正在尝试以下不起作用。
SELECT (
SELECT DISTINCT TO_CHAR(TODAY, 'MON') || '_' || TO_CHAR(TODAY, 'D') AS TODAY
FROM STTM_DATES
)
FROM adb
我正在尝试这个脚本,但没有结果集。
SQLSTMT VARCHAR2(2000);
SQLSTMT := 'SELECT' || ' ' || (SELECT DISTINCT TO_CHAR(TODAY,'MON') || '_' || TO_CHAR(TODAY,'D')AS TODAY FROM STTM_DATES)||' ' || 'FROM ADB';
EXECUTE IMMEDIATE SQLSTMT;
【问题讨论】:
-
你的桌子设计对我来说看起来不是最理想的。不要将每一天存储在单独的列中,这不会扩展,并且会导致需要 hack,而是将所有时间戳存储在单个列中。然后,您可以轻松地使用
WHERE子句在该列中搜索当天。 -
我将使用此脚本每天更新 adb,这就是为什么我要获取列..content ADB 表是 CUST_AC_NO JAN_2 JAN_3 JAN_4 JAN_5 JAN_6 JAN_7....Dec 31
-
我的话被置若罔闻,因为我认为您需要修复您的餐桌设计。 不要将一天存储在单独的列中,所有天都使用一个列。
-
我正在尝试这个脚本,但没有结果集。 SQLSTMT VARCHAR2(2000); SQLSTMT := '选择' || ' ' || (SELECT DISTINCT TO_CHAR(TODAY,'MON') || '_' || TO_CHAR(TODAY,'D')AS TODAY FROM STTM_DATES)||' ' || '来自亚行';立即执行 SQLSTMT;
-
重要提示:请不要张贴样本数据和结果集的图像。只需复制粘贴为纯文本即可。你的桌子设计看起来很糟糕,你需要修复它。如果实施,您正在寻找的解决方案实际上可能会使它变得更加混乱。
标签: sql oracle plsql oracle11g