代码之家  ›  专栏  ›  技术社区  ›  StealthRT

SQL Server组合数据问题

  •  0
  • StealthRT  · 技术社区  · 15 年前

    嘿,我只是想把我的数据合并成一个和。这是我现在的输出:

    Amount
    ---------
    $258.0
    $400.0
    $1011.0
    $628.0
    $628.0
    $340.0
    $340.0
    $1764.0
    

    当然总共是5369美元。这是输出I的类型 需要

    Description   | Quantity | Price | Amount
    --------------------------------------------
    Fees            8          $1.50   $12.00
    Redep                              $5369.00
    
                                       $5381.00
    

    我真正需要的信息是 , 十二 , 5369.00元 5381.00元

    这是我第一次发布这些值的查询:

    SELECT '$' + CONVERT(varchar(50),round((CONVERT(int,Points) * .1),0)) AS 'Amount' 
      FROM tblHGP HGP,  
           OrderDetails OD, 
           tblInvoices i
      JOIN tblCS cs ON i.INumber = cs.INumber
      JOIN tblECI ac ON i.INumber = ac.INumber 
     WHERE cs.SoldTo = HGP.ECard 
       AND issued BETWEEN '2010-09-01' AND '2010-09-30 23:59:59' 
       AND Country = 'US' 
       AND HGP.iNumber = OD.orderdetail 
    ORDER BY issued
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   Martin Smith    15 年前

    在您的澄清之后,如果您真的必须在查询本身中完成所有这些操作,我认为您需要类似的东西。

    DECLARE @Points float, @Qty int
    
    SELECT @Points = SUM(Points), @Qty = COUNT(*)
      FROM tblHGP HGP,  
           OrderDetails OD, 
           tblInvoices i
      JOIN tblCS cs ON i.INumber = cs.INumber
      JOIN tblECI ac ON i.INumber = ac.INumber 
     WHERE cs.SoldTo = HGP.ECard 
       AND issued BETWEEN '2010-09-01' AND '2010-09-30 23:59:59' 
       AND Country = 'US' 
       AND HGP.iNumber = OD.orderdetail 
    
    
    SELECT [Description],Quantity,Price, Amount
    FROM
    ( 
    SELECT 1 AS OrderBy, 'Fees' AS [Description],@Qty AS Quantity, 1.50 AS  Price , 1.5*@Qty AS Amount
    UNION ALL   
    SELECT 2 AS OrderBy, 'Redep' AS [Description],NULL AS Quantity, NULL AS  Price , @Points AS Amount
    UNION ALL   
    SELECT 3 AS OrderBy, NULL AS [Description],NULL AS Quantity, NULL AS  Price , @Points + 1.5*@Qty AS Amount
    ) D
    ORDER BY OrderBy  
    
        2
  •  1
  •   user359040    15 年前

    对于单行上的结果,请尝试:

    SELECT count(*) fees_quantity,
           1.5 fees_price,
           1.5 * count(*) fees_amount,
           round(SUM((CONVERT(int,Points) * .1)),0)) redep_amount,
           round(SUM((CONVERT(int,Points) * .1)),0)) + 1.5 * count(*) total_amount
      FROM tblHGP HGP,  
           OrderDetails OD, 
           tblInvoices i
      JOIN tblCS cs ON i.INumber = cs.INumber
      JOIN tblECI ac ON i.INumber = ac.INumber 
     WHERE cs.SoldTo = HGP.ECard 
       AND issued BETWEEN '2010-09-01' AND '2010-09-30 23:59:59' 
       AND Country = 'US' 
       AND HGP.iNumber = OD.orderdetail 
    ORDER BY issued