У меня есть следующие 2 таблицы:Как рассчитать из 2 таблиц в SQL?
A (ID, No1, No2,D)
B (ID, No3, No4,D)
и табличные данные следующие:
Настольные данных
ID = 1, No1 = 23, No2 = 45, D = 1
ID = 2, No1 = 12, No2 = 5, D = 1
ID = 3, No1 = 14, No2 = 4, D = 1
ID = 4, No1 = 41, No2 = 12, D = 1
ID = 5, No1 = 2, No2 = 25, D = 1
ID = 6, No1 = 3, No2 = 96, D = 1
В таблице данных не любые данные
Если я прохожу Следующий SQL-запрос
SELECT
ISNULL(SUM(dbo.A.No1), 0) AS No1Sum,
ISNULL(SUM(dbo.B.No3), 0) AS No3Sum,
ISNULL(SUM(dbo.A.No1), 0) - ISNULL(SUM(dbo.B.No3), 0) AS Diffrence
FROM dbo.A LEFT
OUTER JOIN dbo.B ON dbo.A.id = dbo.B.id
GROUP BY dbo.B.No3
затем следующие данные грядут
No1Sum = 95, No3Sum = 0, Diffrence = 95
Но когда я добавляю WHERE
состояния и написать запрос, то никаких данных не поступают в следующем запросе
SELECT
ISNULL(SUM(dbo.A.No1), 0) AS No1Sum,
ISNULL(SUM(dbo.B.No3), 0) AS No3Sum,
ISNULL(SUM(dbo.A.No1), 0) - ISNULL(SUM(dbo.B.No3), 0) AS Diffrence
FROM dbo.A
LEFT OUTER JOIN dbo.B ON dbo.A.id = dbo.B.id
WHERE (dbo.A.D = 1)
AND (dbo.B.D = 1) GROUP BY dbo.B.No3
Если данные будут precent в обеих таблицах, то результат будет показать, например
No1Sum = 95, No3Sum = 10, Diffrence = 85,
Если я дам следующий запрос
SELECT
ISNULL(SUM(dbo.A.No1), 0) AS No1Sum,
ISNULL(SUM(dbo.B.No3), 0) AS No3Sum,
ISNULL(SUM(dbo.A.No1), 0) - ISNULL(SUM(dbo.B.No3), 0) AS Diffrence
FROM dbo.A
LEFT OUTER JOIN dbo.B
ON dbo.A.id = dbo.B.id
AND dbo.A.D = 1
AND dbo.B.D = 1
GROUP BY dbo.B.No3
затем следующий результат Показаны
No1Sum = 570, No3Sum = 0, Diffrence = 570
(он подытоживает 6 раз таблицы имеет 6 строк)
Так как вычислить из обеих таблиц, когда данные в обеих таблицах результатом является точнее, но когда в таблице есть данные, а у B нет данных, результат не наступает.
Спасибо заранее
Каков ваш вопрос на самом деле? –
Вы просто хотите суммировать таблицу B, если есть один ID в таблице? –
Не могли бы вы уточнить свой вопрос, какие конкретные данные вы используете и какой конкретный результат вы ожидаете, пожалуйста? –