#c# #sql
#c# #sql
Вопрос:
select
Users.emp as 'No',
Users.username as Name,
SUM(Inv_SubEMP.exchange_price) as Erad,
coalesce(SandSD.val, 0) as s7obat,
ISNULL(Isnull(SUM(Inv_SubEMP.exchange_price),0) -
IsNull(SandSD.val, 0),0) as Totol
from
(
(
(Users join Inv_SubEMP on Users.username = Inv_SubEMP.emp
and userType = 1 and IS_Deleted = 0)
left join InvEMP on InvEMP.proc_id = Inv_SubEMP.proc_id
)
left join SandSD on SandSD.emp_id = Users.emp
and SandSD.IS_Deleted = 0
)
where InvEMP.IS_Deleted = 0
group by Users.emp, Users.username, Inv_SubEMP.emp, SandSD.val
order by Users.emp
Этот запрос собирает разные функции, затем объединяется с другой функцией, но я в основном хочу знать, как я мог бы переписать раздел ЛЕВОГО СОЕДИНЕНИЯ, чтобы он работал должным образом.
Я пытаюсь добавить сюда свое собственное левое соединение, чтобы … результат некоторое время работал правильно, а некоторое время нет .. иногда я оштрафовал деликатный, как № 10 на картинке, большое спасибо
Комментарии:
1. Они имеют разные
s7obat
значения, и вы группируете по этому. Что бы вы хотели, чтобы это изменило?2. Если вы сгруппированы только по
Users.username
, вы получите одну строку для каждого имени пользователя. Но… вы группируетесь по нескольким столбцам.3. я не могу просто сгруппировать его только по user.userName ** Столбец «Users.emp» недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY .
4. Какое значение s7obat является правильным для имени пользователя магазина: 30 или 50?
5. пожалуйста, предоставьте примеры данных
Ответ №1:
Попробуйте это:
select
Users.emp as 'No',
Users.username as Name,
SUM(Inv_SubEMP.exchange_price) as Erad,
SUM(coalesce(SandSD.val, 0)) as s7obat,
ISNULL(Isnull(SUM(Inv_SubEMP.exchange_price),0) -
IsNull(SandSD.val, 0),0) as Totol
from
(
(
(Users join Inv_SubEMP on Users.username = Inv_SubEMP.emp
and userType = 1 and IS_Deleted = 0)
left join InvEMP on InvEMP.proc_id = Inv_SubEMP.proc_id
)
left join SandSD on SandSD.emp_id = Users.emp
and SandSD.IS_Deleted = 0
)
where InvEMP.IS_Deleted = 0
group by Users.emp, Users.username, Inv_SubEMP.emp
order by Users.emp