0

次のように、グループごとの顧客による売上のクエリを作成しました。

SELECT customerid,
SUM (salestax1)As total_salestax1,
SUM(total_payment_received) As total_payment_recieved,
COUNT (orderid)as order_qty,
SUM(paymentamount)As paymentamount
 FROM Orders_74V94W6D22$
WHERE orderdate between '7/6/2011 16:35' and '2/3/2012 11:53'    
GROUP BY customerid 

このクエリは 5 つのフィールドしか表示しませんが、次のフィールドを表示する必要があります。

orderid    billingcompanyname    billingfirstname    billinglastname    
billingcountry    shipcountry    paymentamount creditcardtransactionid    
orderdate    creditcardauthorizationdate    orderstatus    
total_payment_received    tax1_title salestax1

その後、どのように対処するのですか?

4

2 に答える 2

1

GROUP BY の意味を理解する必要があります。customerId でグループ化する場合、すべてのデータが含まgroupedれているため、顧客は 1 つだけになります。

どのようにグループ化し、結果セットにorderid表示しますか? orderid注文 ID が 10 個ある場合、結果は 10 行になると思いますか? はいの場合は、それでグループ化しますが、それはあなたが望んでいることではないと思います

編集:

まあ、これは良い考えではありません。あなたのテーブル構造は間違っており、グループを意味することを完全に理解しているとは思いませんが、このクエリで結果が得られると思います:

 SELECT customerid, 
 (select top 1  [column1] from Orders_74V94W6D22$ where customerid = ORD.customerid),
 (select top 1  [column2] from Orders_74V94W6D22$ where customerid = ORD.customerid),
 (select top 1  [column3] from Orders_74V94W6D22$ where customerid = ORD.customerid),
 SUM (salestax1)As total_salestax1, 
 SUM(total_payment_received) As total_payment_recieved, 
 COUNT (orderid)as order_qty, 
 SUM(paymentamount)As paymentamount
 FROM Orders_74V94W6D22$  ORD
 WHERE orderdate between '7/6/2011 16:35' and '2/3/2012 11:53' 
 GROUP BY customerid 
于 2012-04-11T10:11:25.403 に答える
1

顧客についてさらに選択するには、次のようなクエリをサブクエリとして使用する必要があります。

Select distinct c.[column1], c.[column2], c.[column3], tbl.*
From Orders_74V94W6D22$ c inner join (
 SELECT customerid,
SUM (salestax1)As total_salestax1,
SUM(total_payment_received) As total_payment_recieved,
COUNT (orderid)as order_qty,
SUM(paymentamount)As paymentamount
 FROM Orders_74V94W6D22$
WHERE orderdate between '7/6/2011 16:35' and '2/3/2012 11:53'    
GROUP BY customerid 
) as tbl on tbl.customerid = c.customerid

ただし、複数の注文をグループ化したため、1 つの注文について論理的に選択することはできません

于 2012-04-11T09:45:49.603 に答える