【问题标题】:Adding results of a 'select' statement on to a table I'm building from several other tables将“选择”语句的结果添加到我从其他几个表构建的表中
【发布时间】:2021-08-04 15:40:32
【问题描述】:

我是 SQL 新手。我有一个查询,它为表中的每一行返回一个设置格式的时间戳。查询是:

'''

select to_char(create_ts, 'HH24:MI:SS') from 
SCHEMA.TABLE

'''

我还通过从其他表中获取列并使用内部联接根据共享列和数据匹配它们来构建一个表。我现在需要以相同的方式将上述时间戳逻辑添加到该表中,即只为匹配的行带来结果时间戳。到目前为止,我正在构建的表的代码是:

'''

select A.*,
A.TRANSACTION_ID,
B.AMOUNT,
B.CHARGE_ID,
C.CHARGE_TYPE_ID,
D.CHARGE_GROUP,
E.EXCHANGE_ID,
E.TRADE_DATE
FROM SCHEMA.ESTIMATES A
left join SCHEMA.CHARGES B
ON A.ESTIMATE_ID = B.ESTIMATE_ID
left join SCHEMA.IRECHARGES C
ON B.CHARGE_ID = C.CHARGE_ID
left join SCHEMA.chargetypes D
ON C.CHARGE_TYPE_ID = D.CHARGE_TYPE_ID
left join SCHEMA.TRADE_TRANSACTIONS E
ON A.TRANSACTION_ID = E.TRANS_ID

'''

我无法以与我之前相同的方式在上面添加另一行,例如“F.select to_char(create_ts, 'HH24:MI:SS') from SCHEMA.TABLE”

有什么想法吗?

【问题讨论】:

  • 您是否遇到任何错误?如果是,你能发布错误吗

标签: sql oracle


【解决方案1】:

您想使用Subquery 在另一个查询中使用查询。 将 JOIN 与 SELECT 一起使用。

这能解决你的问题吗?

SELECT
    A.*,
    A.TRANSACTION_ID,
    B.AMOUNT,
    B.CHARGE_ID,
    C.CHARGE_TYPE_ID,
    D.CHARGE_GROUP,
    E.EXCHANGE_ID,
    E.TRADE_DATE,
    timestamp_table.timeformated

FROM SCHEMA.ESTIMATES A
LEFT JOIN SCHEMA.CHARGES B ON (A.ESTIMATE_ID = B.ESTIMATE_ID)
LEFT JOIN SCHEMA.IRECHARGES C ON (B.CHARGE_ID = C.CHARGE_ID)
LEFT JOIN SCHEMA.chargetypes D ON (C.CHARGE_TYPE_ID = D.CHARGE_TYPE_ID)
LEFT JOIN SCHEMA.TRADE_TRANSACTIONS E ON (A.TRANSACTION_ID = E.TRANS_ID)

LEFT JOIN(
    SELECT to_char(create_ts, 'HH24:MI:SS') as timeformated, matchID
    FROM SCHEMA.TABLE
) as timestamp_table ON (A.matchID = timestamp_table.matchID)

注意:使用良好缩进的代码更容易

【讨论】:

  • 如果成功了,你为什么不接受答案,@paddyusa?
  • @Littlefoot 在那里接受了。但是,我有一个与此相同的整体查询有关的新问题。有没有办法过滤时间查询的结果,只引入时间在早上 7 点之后和下午 6 点之前的行??
  • 查看“BETWEEN”关键字。 sql.sh/cours/where/between 可以看看其他基本的 SQL 语句。对于您的示例,我将 INNER 加入 subquery 并在子查询中添加一个 WHERE 子句。您在其中过滤日期
  • 是的,它使用 where 语句进行了排序 - tks
猜你喜欢
  • 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
相关资源
最近更新 更多