SQL - 无法对数据进行分组获取错误消息

时间:2018-03-21 14:35:50

标签: sql sql-server function

Select 
    lot_loc.whse,
    lot_loc.item,
    item.Ufprofile,
    item.UfColor,
    item.Uflength,
    item.unit_weight*Lot_loc.qty_on_hand 'QTY LBS. On Hand',
    item.unit_weight*Lot_loc.qty_rsvd 'QTY LBS. Reserved',
    item.UfQtyPerSkid,
    lot_loc.loc,
    Lot_loc.lot,
    Lot_loc.qty_on_hand,
    Lot_loc.qty_rsvd,
    itemwhse.qty_reorder,
    DateDiff(day, lot.Create_Date, GetDate())'Days Old',
    lot_loc.CreateDate,
    coitem.co_num,
    coitem.co_line,
    coitem.co_cust_num,
    custaddr.name,
    coitem.due_date,
                item.description,
                item.unit_weight*item.lot_size 'STD Run Size (Lbs.)'

from lot_loc_mst lot_loc

left outer join rsvd_inv_mst rsvd_inv on lot_loc.lot = rsvd_inv.lot


LEFT OUTER JOIN coitem_mst coitem ON coitem.co_num = rsvd_inv.ref_num 
AND coitem.co_line = rsvd_inv.ref_line 
AND coitem.item = rsvd_inv.item

left join custaddr_mst custaddr on coitem.co_cust_num = custaddr.cust_num and  coitem.cust_seq = custaddr.cust_seq

Left join item_mst item on lot_loc.item = item.item

left join itemwhse_mst itemwhse on lot_loc.item = itemwhse.item
and lot_loc.whse = itemwhse.whse

inner join lot_mst lot on Lot_loc.lot = lot.lot

我需要手动将数据按qty lbs分组。不知道怎么做。我尝试这样做时收到错误消息。

  

错误:列' lot_loc_mst.whse'在选择列表中无效,因为   它不包含在聚合函数或GROUP BY中   子句。

2 个答案:

答案 0 :(得分:1)

只是一个尝试帮助您进行聚合的示例。我没有列出每一栏,但希望你能够理解它足以自己完成。如果要按列分组,则所有其他列也必须包含在group by子句中,或者使用SUM,MIN,MAX等聚合函数,具体取决于您希望从该列获取的内容。否则SQL不知道如何处理这些列

e.g。

SELECT * FROM
(
Select 
min(item.Uflength) AS [Item Length],
SUM(item.unit_weight*Lot_loc.qty_on_hand) [QTY LBS. On Hand],
SUM(item.unit_weight*Lot_loc.qty_rsvd) [QTY LBS. Reserved],
min(item.UfQtyPerSkid) AS [Qty Per Skid],
DateDiff(day, min(lot.Create_Date), GetDate())[Days Old],
min(item.description) AS [Item Description],
SUM(item.unit_weight*item.lot_size) [STD Run Size (Lbs.)]

from lot_loc_mst lot_loc

left outer join rsvd_inv_mst rsvd_inv on lot_loc.lot = rsvd_inv.lot


LEFT OUTER JOIN coitem_mst coitem ON coitem.co_num = rsvd_inv.ref_num 
AND coitem.co_line = rsvd_inv.ref_line 
AND coitem.item = rsvd_inv.item

left join custaddr_mst custaddr on coitem.co_cust_num = custaddr.cust_num and  
coitem.cust_seq = custaddr.cust_seq

Left join item_mst item on lot_loc.item = item.item

left join itemwhse_mst itemwhse on lot_loc.item = itemwhse.item
and lot_loc.whse = itemwhse.whse

inner join lot_mst lot on Lot_loc.lot = lot.lot
) P
GROUP BY [QTY LBS. On Hand]

答案 1 :(得分:0)

所有未聚合的列必须位于

组中 例如,

选择a,b,总和(c) 来自标签 分组由a,b< - 也许你错过了这部分