0

我有一个名为“ORDER_HISTORY”的表,其中有一个名为“Status”的列。“Status”列包含不同商店的不同状态值。

我的要求是我需要为每个商店获取不同的状态值(计数)并将它们显示在相应的列中。例如:如果我有 53(order_cancelled)和 57(order_completed)作为两个状态,并且商店编号为 20我有两个状态为 57(ieorder_completed)的订单和一个状态为 53(order_cancelled)的订单,然后我需要以如下格式显示结果(计数):

================================================
Store_ID || order_cancelled || order_completed||
------------------------------------------------
20       || 1               || 2              ||
================================================    

如何编写执行上述工作的查询?

请帮助。在此先感谢!

4

3 回答 3

1

尝试这个

SELECT a.Store_ID,b.total as order_completed,c.total as order_completed FROM ORDER_HISTORY a
LEFT OUTER join (select Store_ID,count(*) as total from ORDER_HISTORY where Status=57 group by Store_ID) b on a.Store_ID=b.Store_ID
LEFT OUTER join (select Store_ID,count(*) as total from ORDER_HISTORY where Status=53 group by Store_ID) c on a.Store_ID=c.Store_ID
group by a.Store_ID
于 2018-05-03T07:19:53.167 回答
0

尝试这个:

SELECT dbo.ORDER_HISTORY.Store_ID, ORDER_HISTORY_Cancelled.order_cancelled, ORDER_HISTORY_completed.order_completed FROM dbo.ORDER_HISTORY LEFT OUTER JOIN (SELECT Store_ID, COUNT(Status) AS order_cancelled FROM dbo.ORDER_HISTORY AS TotalCancelled WHERE (Status = N'53') GROUP BY Store_ID) AS ORDER_HISTORY_Cancelled ON dbo.ORDER_HISTORY.Store_ID = ORDER_HISTORY_Cancelled.Store_ID LEFT OUTER JOIN (SELECT Store_ID, COUNT(Status) AS order_completed FROM dbo.ORDER_HISTORY AS TotalComleted WHERE (Status = N'57') GROUP BY Store_ID) AS ORDER_HISTORY_completed ON dbo.ORDER_HISTORY.Store_ID = ORDER_HISTORY_completed.Store_ID GROUP BY dbo.ORDER_HISTORY.Store_ID, ORDER_HISTORY_Cancelled.order_cancelled, ORDER_HISTORY_completed.order_completed

于 2018-05-03T11:23:47.017 回答
0

尝试这个

SELECT Store_ID, (SELECT COUNT(Status) FROM order_history WHERE Status = 53) AS order_cancelled, (select COUNT(Status) FROM order_history WHERE Status = 57) order_completed FROM clover_source.order_history group by Store_ID ;

于 2018-05-03T09:47:27.860 回答