首页 > 解决方案 > SQL如何在它不在键中时显示时间?

问题描述

ERD 和代码练习题如下。我遇到的问题是:

  1. 我不知道如何显示“如果股票尚未交易,则在最后交易日期显示 NULL。我试过nvl(transaction_time, 'NULL')但我认为不对。

  2. 该练习要求提供股票最后交易的日期和时间,但外键"transaction_time"仅显示日期。我将如何访问 SQL 代码中的时间?我只是做一个默认时间吗SYSDATE?

我认为除了这两件事之外,我认为问题所要求的其他一切都是正确的。不过我可能是错的。提前致谢

对于在每个证券交易所上市的每只股票,显示交易所名称、股票代码以及该股票最后交易的日期和时间。按证券交易所名称、股票代码对输出进行排序。如果股票尚未交易,则在最后交易日期显示 NULL。

SELECT
    stock_exchange.stock_ex_id,    
    stock_exchange.name stock_exchange_name,
    stock_exchange.symbol,
    trade.transaction_time    
FROM stock_exchange
    JOIN trade
        ON trade.stock_ex_id = stock_exchange.stock_ex_id
ORDER BY stock_exchange.name, stock_exchange.symbol;

ERD

标签: sqloracle

解决方案


使用外连接查找尚未交易的股票。Oracle DATE 数据类型包含一个时间元素,您只需更改日期格式即可显示时间元素:

SELECT stock_exchange.stock_ex_id, 
       stock_exchange.name stock_exchange_name,
       stock_exchange.symbol,
       to_char(max(trade.transaction_time), 'yyyy-mm-dd hh24:mi:ss')  as last_traded_time
FROM stock_exchange 
LEFT JOIN trade
     ON trade.stock_ex_id = stock_exchange.stock_ex_id
group by stock_exchange.stock_ex_id, 
       stock_exchange.name,
       stock_exchange.symbol
ORDER BY stock_exchange.name, stock_exchange.symbol;

推荐阅读