#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
Я создал таблицу
CREATE TABLE #employee
(
employee_code VARCHAR(100) NOT NULL,
employee_name VARCHAR(50) NOT NULL,
doj DATE ,
dob DATE
)
INSERT INTO #employee (employee_code, employee_name, doj, dob)
SELECT '1', 'sabith', '01/01/2015', '01/01/1990'
UNION ALL
SELECT '2', 'siraj', '01/01/2016', '01/01/1991'
CREATE TABLE #emp_leave_tables
(
employee_code VARCHAR(50),
leave_ref_no VARCHAR(50),
req_date date,
leave_from_date date,
leave_to_date date
)
INSERT INTO #emp_leave_tables (employee_code, leave_ref_no, req_date, leave_from_date, leave_to_date)
SELECT '1', '1001', '01/01/2020', '01/01/2020', '01/05/2020'
UNION ALL
SELECT '2', '1001', '01/01/2020', '01/01/2020','06/01/2020'
Я хочу создать временную таблицу #result и новый столбец no_days для подсчета количества отпускных единиц сотрудника, и я хочу вставить значение во временную таблицу
Комментарии:
1. В чем вопрос? В любом случае вы не должны использовать локализованные строки для вставки дат, поскольку их значение варьируется от одного языка к другому. Что бы
04/07/2020
это значило? Вместо этого используйте однозначный неразделенный формат, т.Е.20200407
для 7 апреля2. Что касается вставки нескольких значений, вам не нужно ВЫБИРАТЬ и ОБЪЕДИНЯТЬ ВСЕ. Используйте
VALUES
предложение с несколькими строками в круглых скобках, т.е.VALUES ('1',....), ('2',....)
3. Я хочу найти максимальное и минимальное количество единиц отпуска, полученное сотрудником, вставив эти значения во временную таблицу
4. создайте таблицу temp_table (employee_code varchar(50) первичный ключ, leave_units smallint ) вставьте в таблицу temp_table значения ( выберите e.employee_code, max(DATEDIFF(day, el.leave_to_date, el.leave_from_date)) как максимум, min(DATEDIFF(day, el.leave_to_date, el.leave_from_date)) как минимумиз группы emp_leaves_table e по e.employee_code)
5. Что. является ли «оставить единицу»? Ничто в ваших данных не называется «единицей».
Ответ №1:
Для создания новой temp
таблицы попробуйте следующее:
create table temp_table (
employee_code varchar(50) primary key,
leave_units smallint
);
Затем вы можете использовать это для заполнения таблицы:
insert into temp_table
values (
select e.employee_code
, max(DATEDIFF(day, el.leave_to_date, el.leave_from_date)) as maximum
, min(DATEDIFF(day, el.leave_to_date, el.leave_from_date)) as minimum
from emp_leaves_table e
group by e.employee_code
);
Комментарии:
1. мне нужно подсчитать количество дней » отпуска от даты до отпуска до даты», и мне нужно вставить это значение в столбец временной таблицы, чтобы найти максимальное и минимальное количество отпусков, взятых сотрудником
2. @sirajk проверьте отредактированный запрос, это должно указать максимальное и минимальное количество дней, на которые каждый сотрудник взял отпуск.
3. показывает, как это сообщение 156, уровень 15, состояние 1, строка 38 Неправильный синтаксис возле ключевого слова ‘select’. Сообщение 102, уровень 15, состояние 1, строка 40 Неправильный синтаксис рядом с ‘)’.
4. @singh.rbir вы не используете ключевое
values
слово при выборе данных…