假設我有下面的SQL查詢(Notice the JOIN
):如何使用GROUP BY的查詢與JOIN
SELECT
bpq.Id,
b.BatchCode,
bpq.PartId,
bpq.Hkid
FROM
BoxPartsQuantity bpq
JOIN
Batch b
ON
bpq.BatchId = b.Id
WHERE
PartId = 1
,並傳回的結果是:
Id BatchCode PartId Hkid
137 2016-03-31 1 34361
138 2016-03-31 1 34361
139 2016-03-31 1 34361
140 2016-03-31 1 34361
141 2016-03-31 1 34361
1123 2016/04/19 1 34361
1976 2016/04/29 1 34361
我如何刪除在BatchCode
和Hkid
中重複,假設我想得到如下結果:
Id BatchCode PartId Hkid
137 2016-03-31 1 34361
1123 2016/04/19 1 34361
我試過下面的代碼:
SELECT
bpq.Id,
b.BatchCode,
bpq.PartId,
bpq.Hkid
FROM
BoxPartsQuantity bpq
JOIN
Batch b
ON
bpq.BatchId = b.Id
WHERE
PartId = 1
GROUP BY
b.BatchCode,
bpq.Hkid
但它返回我這個錯誤:
[SQL]SELECT bpq.Id, b.BatchCode, bpq.PartId, bpq.Hkid FROM BoxPartsQuantity bpq JOIN Batch b ON bpq.BatchId = b.Id WHERE PartId = 1 GROUP BY b.BatchCode, bpq.Hkid
[Err] 42000 - [SQL Server]Column 'BoxPartsQuantity.Id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
我對我應該和必須做非常困惑,因爲我沒有那麼多熟悉SQL編碼和所有。謝謝
@TheQuestioner在這種情況下,你必須從'GROUP BY'條款刪除'bpq.Hkid',並添加像'MIN(bpq.Hkid )'在'SELECT'中。 –