2017-06-20 46 views
0
select 
    TRN_ADP_Items_Tracker.request_id, 
    TRN_ADP_Stationary_Request.requester_name, 
    item_id, 
    case when MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE)=6 then sum(item_qty_traded) else 0 end as JUNE, 
    case when MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE)=7 then sum(item_qty_traded) else 0 end as JULY, 
    case when MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE)=8 then sum(item_qty_traded) else 0 end as AUG 

    from TRN_ADP_Items_Tracker 
    join TRN_ADP_Stationary_Request 
    on TRN_ADP_Items_Tracker.request_id = TRN_ADP_Stationary_Request.stationary_request_id 
    group by TRN_ADP_Stationary_Request.requester_name,item_id, 
     MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE); 
request requester item 
_id  _name _id JUNE JULY AUG 
3 Prasad 150 2 0 0 
3 Prasad 154 2 0 0 
1 Sneha  150 15 0 0 
1 Sneha  150 0 15 0 
1 Sneha  150 0 0 6 
1 Sneha 154 4 0 0 

但在这里我想结果下面给出这样的: -我一直想写一个下面的SQL查询和e得到结果查询

request_id requester_name item_id JUNE JULY AUG 
1  Sneha  150  15  15 6 

如果一日3列中的数据是相同的,然后那么如上所述,月份数据应该排在第一行。

+0

您正在使用哪个[DBMS](https://en.wikipedia.org/wiki/DBMS)? –

+2

问题题目是向潜在的回答者清楚地描述这个问题,并且让有相似问题的人很容易找到同样的问题。请使用描述问题的标题,而不是活动。 – HoneyBadger

回答

0

你需要从你的选择

select 
TRN_ADP_Items_Tracker.request_id, 
TRN_ADP_Stationary_Request.requester_name, 
item_id 

group by TRN_ADP_Stationary_Request.requester_name,item_id, 
    MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE) 
+0

仍然得到同样的结果 我的问题是如何合并这三行 1斯纳150 15 0 0 1斯纳150 0 15 0 1斯纳150 0 0 6 结果应该是 1斯纳150 15 15 6 – Sneha

+0

在group by子句中,只有您选择的这三列: TRN_ADP_Items_Tracker.request_id, TRN_ADP_Stationary_Request.requester_name, item_id – Gurdyal

0

纠正你GROUP_ID到只有三列需要从选择列表中取出REQUEST_ID列。

select 
     --TRN_ADP_Items_Tracker.request_id, 
     TRN_ADP_Stationary_Request.requester_name, 
     item_id, 
     case when MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE)=6 then sum(item_qty_traded) else 0 end as JUNE, 
     case when MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE)=7 then sum(item_qty_traded) else 0 end as JULY, 
     case when MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE)=8 then sum(item_qty_traded) else 0 end as AUG 

     from TRN_ADP_Items_Tracker 
     join TRN_ADP_Stationary_Request 
     on TRN_ADP_Items_Tracker.request_id = TRN_ADP_Stationary_Request.stationary_request_id 
     group by TRN_ADP_Stationary_Request.requester_name,item_id, 
      MONTH(TRN_ADP_Items_Tracker.ITEM_QTY_TRADE_DATE);