prasanna204 Ответов: 1

Как зациклить данные столбцов и суммировать значения на основе условия


привет друзья

У меня есть таблица посещаемости в том, что у меня есть столбцы: EmpCode,столбец empname,1,2,3.......upt0 31(дней).Я сбрасываю посещаемость с листа excel.

Экс:
EmpCode EmpName 1 2 3
1013 Ч. Кришна Мохан А П П

Теперь то, что я ищу, это

циклические Столбцы от 1 до 31 и найдите количество текущих дней и количество абсцентных дней.

о/р:
Столбец Empname EmpCode Нет.ofpresentdays нет.ofAbscentDays

1013 Ч. Кришна Мохан 2 1

как достичь этого в sqlserver??

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

Выберите "Выбрать "
+ Функции quotename(ок. название)
+ ', count (*) from [dbo].[EmpAttendance] group by ';
+ Функции quotename(ок. название)

Из представления sys.c столбцов
Где c.аргумент object_id = object_id используется(ДБО.EmpAttendance;)

выберите [1], count(*) из [dbo].[EmpAttendance] где Empcode=1020 group by [1]

1 Ответов

Рейтинг:
7

manu_dhobale

Пожалуйста, попробуйте это

SELECT
   EmpCode,EmpName,[No.ofpresentdays],[No.ofAbscentDays]
FROM
   dbo.attendance T
   CROSS APPLY (
      SELECT Count(*)
      FROM (VALUES ([1]),	([2]),	([3]),	([4]),	([5]),	([6]),	([7]),	([8]),	([9]),	([10]),	([11]),	([12]),	([13]),	([14]),	([15]),	([16]),	([17]),	([18]),	([19]),	([20]),	([21]),	([22]),	([23]),	([24]),	([25]),	([26]),	([27]),	([28]),	([29]),	([30]),	([31])) C (Val)
      WHERE Val = 'P'
   ) A ([No.ofpresentdays])
    CROSS APPLY (
      SELECT Count(*)
     FROM (VALUES ([1]),	([2]),	([3]),	([4]),	([5]),	([6]),	([7]),	([8]),	([9]),	([10]),	([11]),	([12]),	([13]),	([14]),	([15]),	([16]),	([17]),	([18]),	([19]),	([20]),	([21]),	([22]),	([23]),	([24]),	([25]),	([26]),	([27]),	([28]),	([29]),	([30]),	([31])) C (Val)
      WHERE Val = 'A'
   ) P ([No.ofAbscentDays])


prasanna204

Большое вам спасибо manu_dhobale

manu_dhobale

Пожалуйста.