Member 12245539 Ответов: 2

Как присоединиться и получить результат в SQL server


У меня есть две sql-таблицы Fee_Payable_to_Students и Fee_Receipt_Students

Fee_Payable_to_Students имеет значение как
S_Adm_No | Student | FheadId     |FHead            |    Apr | May | Jun   |
 1001    | Ramesh  |  1          | Admission Fee   |  25000 |   0 | 25000 |
 1001    | Ramesh  |  2          | Annual Fee      |   6600 |   0 |  6600 |
 1001    | Ramesh  |  3          | Tuition Fee     |   1900 |1900 |  1900 |


Fee_Receipt_Students

S_Adm_No | Student | FheadId     |FHead            |    Apr | May | Jun   |
 1001    | Ramesh  |  1          | Admission Fee   |  25000 |   0 | 25000 |
 1001    | Ramesh  |  2          | Annual Fee      |   6600 |   0 |  6600 |


Теперь я хочу показать как
S_Adm_No| Student | FheadId |FHead          |    Apr | May | Jun   | Q1  |R_Amt|Bal  |
 1001   | Ramesh  |  1      | Admission Fee |  25000 |   0 | 25000 |50000|63200|5700 |
 1001   | Ramesh  |  2      | Annual Fee    |   6600 |   0 |  6600 |13200|63200|5700 |
 1001   | Ramesh  |  3      | Tuition Fee   |   1900 |1900 |  1900 | 5700|63200|5700 |



Примечание: R_Amt происходит от Fee_Receipt_Students как псевдоним

мой код ниже. Некоторые, пожалуйста, помогите...

[edit]добавлен блок кода-OriginalGriff [/edit]

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

select	
		P.S_Adm_No,P.S_Name	,P.fheadid,P.FHead,P.apr,P.may,P.Jun, 
		(P.apr+P.may+P.Jun)Q1, 
		SUM(R.Apr+R.May+R.Jun) R_Amt 
FROM	
		Fee_Payable_to_Students AS P LEFT JOIN Fee_Receipt_Students AS R 
		ON P.S_Adm_no = R.S_Adm_no AND P.cls_SecId = R.cls_SecId 
where	P.S_Adm_No='1001' 
group by 
		P.S_Name,P.fheadid,P.S_Adm_No,P.apr,P.may,P.Jun,P.FHead,R.S_Adm_No    
order by P.S_Adm_No

2 Ответов

Рейтинг:
2

Peter Leow

OriginalGriff прав, сбрось эту свою базу данных. Потому что это вовсе не таблицы базы данных, а скорее листы excel. Но таблицы базы данных никогда не являются листами excel. Вы столкнетесь с большим количеством проблем, пытаясь манипулировать такого рода таблицами. На самом деле ты уже это сделал. Итак, начните изучать правильный способ проектирования реляционной базы данных => Введение в проектирование баз данных[^] и 1NF, 2NF, 3NF и BCNF в нормализации баз данных / учебник по СУБД | Studytonight[^]


Member 12245539

Fee_Receipt_Students-это только вид, а не таблица.....

Peter Leow

Как бы то ни было, посетите ссылки и узнайте правильный способ проектирования базы данных.

Member 12245539

ладно
спасибо

Рейтинг:
0

OriginalGriff

Лично? Я бы сбросил все и переделал базу данных.
Это не эффективный дизайн-он дублирует информацию, ограничивает вас тремя конкретными месяцами и вообще усложняет вашу жизнь.
Вместо этого создайте таблицу Students, которая содержит StudentID (который, как я предполагаю, является S_Adm_no), имя и любую другую соответствующую информацию (адрес, адрес электронной почты, мобильный телефон, другие контактные данные и т. д.)
Затем добавьте таблицу FeeTypes, содержащую FeeID (fheadid, я предполагаю) и описание (FHead).
Затем создайте таблицу транзакций, содержащую идентификатор транзакции, дату, идентификатор студента, FeeID и значение
Теперь, когда плата становится причитающейся, она добавляется к транзакциям с положительным значением.
Когда приходит студенческий платеж, он добавляется к транзакциям с отрицательным значением.
Однако после такой относительно простой вопрос, чтобы извлечь информацию вам нужно, без каких-то нелепых номер группы по п. добавляются.