sql - 在完全外连接中按日期对两个单独的列进行排序

标签 sql sql-server full-outer-join

我使用完全外连接排列了两列数据,但它包含两个单独的日期列,这使得排序变得困难。

表 1 包含产品的销售排名数据。 表2为同一产品的实际销售数据。

每个表都可能包含其他表没有的日期条目。

因此,想象一下在完全连接之后,我们最终会得到像这样的简化示例:

ProdID  L.Date         P.Date       Rank   Units
101     null           2011-10-01   null   740
101     2011-10-02     2011-10-02   23     652
101     2011-10-03     null         32     null

这是我用来提取此数据的查询:

select L.ListID, L.ASIN, L.date, L.ranking, P.ASIN, P.POSdate, P.units from ListItem L
full outer join POSdata P on 
    L.ASIN = P.ASIN and 
    L.date = P.POSdate and 
    (L.ListID = 1 OR L.ASIN is null)
where (L.ASIN = 'xxxxxxxxxx' and L.ListID = 1) or  
      (P.ASIN = 'xxxxxxxxxx' and L.BookID is null) 
order by POSdate, date

这有点复杂,因为产品可能会出现在多个列表中,所以我也必须考虑到这一点,但它会返回我需要的数据。我愿意接受改进它的建议,当然如果有人有的话。

问题是,当两个日期列中可能至少有一些 NULL 时,如何正确排序。当两列都有一个 NULL 时,我现在的排序方式将不起作用。

谢谢。

最佳答案

ORDER BY ISNULL(P.POSdate,L.date) 我认为应该满足您的需求?

关于sql - 在完全外连接中按日期对两个单独的列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836935/

相关文章:

php - mysql 索引到日期时间类型的列

sql - 使整个 block 有序

sql-server - 无法连接到 Azure VM 上的 SQL Server

sql - 计算总记录与状态

sql - 每 N 选择行并进行 SUM

mysql - 查询 boolean 错误

sql - 如何在 MySQL 中执行 FULL OUTER JOIN?

sql - 基于多个字段的完整外部联接

sql - 查找每个帖子的用户总数 SQL QUERY

php - 合并mysql表中的多个 'orders'并显示总价?