我需要创建一个查询GROUP BY
子句的查询。具体来说,在Order_ID
和SUB_ID
列上计算每个Product_IDs
和Order_ID
的SUB_ID
数。
它应该如下所示:
但是,数据在奇数侧设置了一点,获取信息的唯一方法(当然减去Count列)是:
SELECT
tbl1.Order_Id
,tbl1.Sub_Id
,tbl1.Product_Id
,tbl1.Product_Value
,tbl2.Product_Owner
,tbl2.Owner_Id
FROM
tbl1 AS tbl1
LEFT OUTER JOIN
tbl2 AS tbl2 ON tbl1.Order_Id=tbl2.Order_Id AND tbl1.Sub_Id=tbl2.Sub_Id
我该如何添加这样的列?
我想你只需要GROUP BY
:
SELECT tbl1.Order_Id, tbl1.Sub_Id,
COUNT(tbl1.Product_Id)
FROM tbl1 LEFT OUTER JOIN
tbl2
ON tbl1.Order_Id = tbl2.Order_Id AND tbl1.Sub_Id = tbl2.Sub_Id
GROUP BY tbl1.Order_Id, tbl1.Sub_Id;
因为查询仅从tbl1
返回行并使用LEFT JOIN
,所以您应该能够:
SELECT tbl1.Order_Id, tbl1.Sub_Id,
COUNT(tbl1.Product_Id)
FROM tbl1
GROUP BY tbl1.Order_Id, tbl1.Sub_Id;
编辑:
我明白了,这就是样本数据。在这种情况下,你可能只想要row_number()
:
SELECT tbl1.Order_Id, tbl1.Sub_Id, tbl1.Product_Id, tbl1.Product_Value,
tbl2.Product_Owner, tbl2.Owner_Id
ROW_NUMBER() OVER (PARTITION BY tbl1.Order_Id, tbl1.Sub_Id ORDER BY tbl1.Product_Id) as seqnum
FROM tbl1 LEFT OUTER JOIN
tbl2
ON tbl1.Order_Id = tbl2.Order_Id AND
tbl1.Sub_Id = tbl2.Sub_Id;