Rabee3-F1.787545 Ответов: 1

В SQL использовать С где


SELECT  reg.[regcor_id]
        ,c1.[cor_start]
        ,c1.[cor_end]
        ,c1.[cor_hours]
        ,reg.[total_sc]
        ,c1.[currency]
        ,cu.[currency]
        ,c1.[rate]
        , c1.[status]
        ,c1.[sem_id]
        ,s1.[semester]
        ,s1.[year]
        ,c1.[lev_id]
        ,l1.[level]
        ,reg.[stu_id]
        ,reg.[stu_reg_id]
        ,ISNULL(SUM(p1.[amount_sc]),0) AS 'paid sc'
        ,reg.[total_fc]
        ,ISNULL(SUM(p1.[amount_fc]),0) AS 'paid fc'
FROM       [DB_SchoolManager].[dbo].[tbl_stu_reg]    AS reg  
INNER JOIN [DB_SchoolManager].[dbo].[tbl_courses]    AS c1 on reg.regcor_id = c1.cor_id 
INNER JOIN [DB_SchoolManager].[dbo].[tbl_currencies] AS cu on c1.[currency] = cu.[currency_id] 
INNER JOIN [DB_SchoolManager].[dbo].[tbl_semester]   AS s1 on c1.sem_id     = s1.sem_id  
INNER JOIN [DB_SchoolManager].[dbo].[tbl_levels]     AS l1 on s1.lev_id     = l1.lev_id 	
LEFT JOIN [DB_SchoolManager].[dbo].[tbl_incoming_payments] AS p1 on reg.stu_reg_id = p1.[stu_reg_id]  
WHERE     reg.stu_id = '1'
GROUP BY  reg.[regcor_id]
          ,c1.[cor_start]
          ,c1.[cor_end]
          ,c1.[cor_hours]
          ,reg.[total_sc]
          ,c1.[currency]
          ,cu.[currency]
          ,c1.[rate],c1.[status]
          ,c1.[sem_id]
          ,s1.[semester]
          ,s1.[year]
          ,c1.[lev_id]
          ,l1.[level]
          ,reg.[stu_id]
          ,reg.[stu_reg_id]
          ,reg.[total_fc]  
HAVING    ISNULL(SUM(reg.[total_fc]),0)> ISNULL(SUM(p1.[amount_fc]),0)


Что я уже пробовал:

Он все еще показывает первую строку, которая имеет paidfc=total_fc
regcor_id	cor_start	cor_end	cor_hours	total_sc	currency	currency	rate	status	sem_id	semester	year	lev_id	level	stu_id	stu_reg_id	paid sc	total_fc	paid fc
30	2019-01-01	2019-03-31	355	4974750.0000	2	USD	1507.5000	Opened	1	الفصل الدراسي الأول	2018-2019	1	الأول الثانوي	1	9	4950000.0000	3300.0000	3300.0000
31	2019-01-01	2019-03-31	60	2864250.0000	2	USD	1507.5000	Opened	2	الفصل الدراسي الأول	2018-2019	2	الثاني الثانوي	1	12	0.0000	1900.0000	0.0000
32	2019-04-06	2019-07-27	0	3000000.0000	1	LBP	1.0000	Opened	4	الفصل الدراسي الأول	2018-2019	3	الثالث الثانوي	1	13	0.0000	3000000.0000	0.0000

#realJSOP

Ваши столбцы total_fc и paid_fc кажутся строками, даже если вы делаете с ними математику...

Совет по кодированию - не ставьте пробелы, подчеркивания или другие специальные символы в имена таблиц или столбцов (также избегайте использования зарезервированных слов sql) - это имеет тенденцию отвлекать разработчика. В случае верблюд, а не, например, "TotalFC". Отсутствие специальных символов в именах столбцов также устраняет необходимость использования квадратных скобок вокруг их имен.

CHill60

Советы по получению ответов на этом форуме по вопросам связанным с SQL:
1 - упростите свой запрос до голых костей, которые продемонстрируют проблему (кстати, это часто помогает вам решить вашу собственную проблему). Удалите выходные столбцы, которые не помогают продемонстрировать проблему, удалите соединения, которые не помогают продемонстрировать проблему
2 - Расскажите нам структуру таблицы для всех таблиц в упрощенном запросе
3 - предоставьте примеры данных для всех таблиц в упрощенном запросе
4 - Покажите или объясните ваши ожидаемые результаты для предоставленных вами выборочных данных.

1 Ответов

Рейтинг:
9

ZurdoDev

Цитата:
Функция isnull(сумма(Рег.[total_fc]),0)&ГТ; функция isnull(сумма(П1.[amount_fc]),0)
Вы сравниваете total_fc и amount_fc Тогда вы спрашиваете о том, почему ссора с paidfc=total_fc. Потому что ваше наличие не проверяет paidfc.


CHill60

Посмотреть, выбрать

,ISNULL(SUM(p1.[amount_fc]),0) AS 'paid fc'
:-)

ZurdoDev

Ох. Ну, в любом случае, они делают что-то не так, что мы не можем сказать, не будучи в состоянии запустить его.

Обладание довольно просто и должно работать нормально.

CHill60

Да. Посмотрим, вернутся ли они с нужной информацией. Я подозреваю, что это недоразумение, если честно