Привет, я пытаюсь написать оператор If в атрибуте Band, но безуспешно T_T. что я пытаюсь сделать, так это иметь один символ A, B, C, D в зависимости от атрибута owner_category, Sheds и Water_Supply. Любая помощь будет отличной ^^.
CREATE TABLE Rent_Band
(
Plot_ID NUMBER(3),
Band VARCHAR(1)
IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Council' AND WHERE Sheds ='No' THEN Band ='A'
ELSE IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Private' AND WHERE Water_Supply ='Yes' THEN Band ='D'
ELSE IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Council' AND WHERE Water_Supply ='No' AND WHERE Sheds ='Yes' THEN Band ='B'
ELSE IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Private' AND WHERE Water_Supply ='No' AND WHERE Sheds ='No' THEN Band ='B'
ELSE THEN Band = 'C',
Rent_Charge NUMBER(4),
Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')),
Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')),
Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
)
1 ответ
Прочтите документацию по виртуальным столбцам:
CREATE TABLE Rent_Band
(
Plot_ID NUMBER(3),
Band VARCHAR(1) AS
(CASE WHEN Owner_Category = 'Council' AND Sheds ='No' THEN 'A'
WHEN Owner_Category = 'Private' AND Water_Supply ='Yes' THEN 'D'
WHEN Owner_Category = 'Council' AND Water_Supply ='No' AND Sheds ='Yes' THEN 'B'
WHEN Owner_Category = 'Private' AND Water_Supply ='No' AND Sheds ='No' THEN 'B'
ELSE 'C' END),
Rent_Charge NUMBER(4),
Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')),
Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')),
Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
)
Кстати, я НАСТОЯТЕЛЬНО рекомендую:
- использование поля
bit
вместо ограниченияYes
/No
дляSheds
иWater_Supply
(экономит место и ограничения проверки накладных расходов, а в большинстве языки приложения) - использование таблицы поиска для
Owner_Category
вместо строкового ограничения в основном по тем же причинам
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.