SQL Query用于检索非不同的记录

时间:2015-01-30 03:12:27

标签: sql sql-server

假设数据集包含3列和n行

{Table - ProductSales
 Customer Name    Transaction no   Productlist
     A                 T1              P1
     A                 T2              P2
     B                 T3              P3
     C                 T4              P4
     D                 T5              P5
     D                 T6              P6
     }
{Consider the sales table : Sales
  TransNo       Amount of Sales Quantity
    T1              $100           4
    T2              $200           2
    T3              $50            1
    T4              $500           10
    T5              $600           3
    T6              $700           4}

现在我想要检索具有多个事务的客户记录 记录。预期输出:

     A                 T1              P1     
     A                 T2              P2     
     D                 T5              P5     
     D                 T6              P6

&安培;我需要获得另一套整体销售报告:预期输出

{Customer     NumberofTransaction     totalsales totalquantitypurchased
     A              2                    $300             6
     B              1                    $50              1
     C              1                    $500             10
     D              2                    $1300             7}

由于

2 个答案:

答案 0 :(得分:1)

大多数SQL版本(包括SQL Server)都支持ANSI标准窗口函数。有了这些,您可以这样做:

select CustomerName, TransactionNum, Productlist
from (select ps.*, count(*) over (partition by CustomerName) as cnt
      from ProductSales ps
     ) ps
where cnt > 1;

如果您的SQL版本不支持窗口函数,您可以使用aggregation和join / in / exists子句执行类似的操作。

答案 1 :(得分:1)

您的第一部分请参阅Gordon的回复和第二部分

select CustomerName, COUNT(sl.TransactionNo), SUM(AmountOfSales), SUM(Quantity)
from ProductSales ps
JOIN Sales sl
ON ps.TransactionNo = sl.TransactionNo
GROUP BY CustomerName