Я новичок в SQL и у меня проблемы.У меня есть две таблицы:
1. TopStock : Id |RuyeId| Code |ModelId|Quantity|ColorId
.............: 1 | 1019 |290105| 44 | 100 | 23
.............: 2 | 1019 |290105| 44 | 150 | 23
.............: 3 | 1019 |290105| 44 | 400 | 19
.............: 4 | 1019 |290105| 44 | 50 | 23
.............: 4 | 1018 |280102| 21 | 800 | 14
2. DownStock : Id|KafiId| Code |Quantity|ColorId
.............: 1 | 1005 | 2901 | 200 | 21
Это мой сценарий: TopStock
можно объединить с DownStock
, если DownStock
'* Code
равно первым 4 числамв TopStock
х Code
.Я хочу запрос, который показывает сумму суммы каждого TopStock
s GROUP BY: ModelId,ColorId
и сумму количества DownStocks, которые можно объединить с ним.
Это мой запрос:
SELECT DISTINCT SUM(top.Quantity) as Quantity, MAX(top.Code) as Code
MAX(top.ColorId) as ColorId, MAX(top.ModelId) as ModelId, MAX(top.RuyeId) as RuyeId,
SUM(down.Quantity) as DownQuantity
FROM TopStock as top JOIN DownStock as down ON top.Code like '%'+down.Code+'%'
WHERE top.Status = 0
GROUP BY top.ModelId, top.ColorId, top.Code, down.Code
Я хочу этот результат:
Quantity| Code |ColorId|ModelId|RuyeId|DownQuantity
. 300 |290105| 23 | 44 | 1019 | 200
. 400 |290105| 19 | 44 | 1019 | 200
Фактически DownQuantity
должно быть суммой возможного DownStock
количества для каждого GROUP BY
ed TopStock
элемента.Но запрос возвращает это:
Quantity| Code |ColorId|ModelId|RuyeId|DownQuantity
. 300 |290105| 23 | 44 | 1019 | 600 -> (3*200)
. 400 |290105| 19 | 44 | 1019 | 200
Проблема: 3*200
, потому что у меня есть 3 TopStock
строка с такими же ColorId
и ModelId
.Я просто хочу 200, а не 600. Кто-нибудь может это исправить?