#sql #sql-server #tsql #sql-server-2008
#sql #sql-сервер #tsql #sql-сервер-2008
Вопрос:
Мне нужно создать представление в SQL Server, которое возвращает разные результаты из разных таблиц для каждого дня недели.
Можно ли создать представление, подобное приведенному ниже?.
Например, если сегодня воскресенье, он возвращает строки из Tbl_FRUITS
, а если понедельник, он возвращает строки из Tbl_VEGETABLE
.
CREATE VIEW TBL_CART
AS
IF (DATEPART(WEEKDAY,GETDATE()) = '1')
SELECT * FROM Tbl_FRUITS
ELSE IF (DATEPART(WEEKDAY,GETDATE()) = '2')
SELECT * FROM Tbl_VEGETABLE
Ответ №1:
Используйте union all
с вашим условием в качестве соответствующего where
предложения. Вам нужно будет убедиться, что вы возвращаете одни и те же столбцы из каждой отдельной таблицы, но в любом случае это нормально для представления. Повторяйте объединения столько дней, сколько у вас разных таблиц.
SELECT *
FROM Tbl_FRUITS
WHERE DATEPART(WEEKDAY,GETDATE()) = 1
UNION ALL
SELECT *
FROM Tbl_VEGETABLE
WHERE DATEPART(WEEKDAY,GETDATE()) = 2;
Примечание: Как упоминал Гордон Линофф, вы не заключаете числа в кавычки (это делает их строками). И вы не сравниваете числа со строкой.
Комментарии:
1. Я взаимодействую с другой системой с помощью одного ПРЕДСТАВЛЕНИЯ. Если мне нужно возвращать разные данные за каждый день, должен ли я использовать объединение ВСЕ 7 раз?
2. Вы не должны сравнивать целое число со строковым значением.