【问题标题】:Sql Select from two tables in single querySql 从单个查询中的两个表中选择
【发布时间】:2014-09-11 04:22:04
【问题描述】:

我有两个表如下

        SalesDetails                          PurchaseDetails 
Date   SaleOrderId ProductId Qty       Date    PurcsOrderId ProductId    Qty 
2/2/12 S_1           P_1       4       1/2/12   PO_1          P_1       50
3/2/12 S_2           P_1       5       4/2/12   PO_2          P_1       50   
3/2/12 S_2           P_2       7       
6/2/12 S_3           P_1       3
9/2/12 S_4             1       5

from these two tables i want to show a report like this
         Product Inquiry Report 
             ProductId: P_1
Date     TrId Debit    Credit   
1/2/12   PO_1  50                
2/2/12   S_1            4   
3/2/12   S_2            5
4/2/12   PO_2  50   
6/2/12   S_3            3

这里购买详细信息的数量列在报告中变为“借方”,而销售详细信息中的数量在报告中变为“贷方”列。在报告中,交易应按日期显示,如图所示有没有办法在单个查询,如果是,那么如何?如果没有,那么还有其他解决方案吗?提前致谢

【问题讨论】:

    标签: sql sql-server crystal-reports


    【解决方案1】:

    使用联合:

    SELECT Date, SaleOrderID as TrId, NULL as Debit, Qty as Credit 
    FROM SalesDetails
    UNION
    SELECT Date, PurcsOrderId AS TrId, Qty AS Debit, NULL as Credit
    FROM PurchaseDetails
    ORDER BY Date
    

    【讨论】:

    • 非常感谢@Bullat。这是一个美丽的逻辑
    【解决方案2】:

    SQL Fiddle:

    SELECT * 
    FROM
    (
      SELECT sa.Date, sa.SaleOrderId AS TRId, Null AS Debit, sa.Qty AS Credit
      FROM SalesDetails sa
      UNION
      SELECT pa.Date, pa.PurcsOrderId AS TRId, pa.Qty AS Debit, Null AS Credit
      FROM PurchaseDetails pa
    ) m
    ORDER BY 1
    

    如果您希望值是 0,则分别使用 0 AS Debit 和 0 AS Credit。

    【讨论】:

    • 它是 Bulat 答案的一种更解释的形式。谢谢@Linger :)
    猜你喜欢
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2015-07-29
    • 2012-10-15
    相关资源
    最近更新 更多