-1

J'ai une question ici:horodatage de stockage d'une action dans une table

alter proc spbadge 
 
    @WeekNumber nvarchar(255) 
 
as 
 
begin 
 

 
update pointsbadge 
 
set 
 
\t 
 
    badge1 =(case when WeeklyHoursLogged >= '40' then 1 else 0 end), 
 
\t badge2 = (case when WeeklyHoursLogged<'40' then 1 else 0 end), 
 
\t badge3 = (case WHEN WeeklyHoursLogged >= 50 and WeeklyHoursLogged < 55 THEN '1' else 0 end), 
 
\t badge4 = (case WHEN WeeklyHoursLogged >= 55 and WeeklyHoursLogged < 60 THEN '1' else 0 end), 
 
\t badge5 = (case WHEN WeeklyHoursLogged >= 60 THEN '1' else 0 end); 
 

 
end

Maintenant, après l'exécution de la requête ci-dessus avec les conditions, j'ai cette mise à jour la table "pointsBadge" -

imm

Scénario: Ici, vous verrez 5 badges (badge1 jusqu'à badge5). Quand un employé est récompensé d'un badge, il devient 1, sinon 0. Par exemple: Brinda gagne tous les badges, alors que lyka ne gagne que badge1.

Problème: Je veux avoir une autre table « employee_badge » - où chaque fois qu'un employé est récompensé d'un badge, à savoir chaque fois que sa valeur est 1, dans ce tableau « employee_badge », le employeeid, badgeid et le temps devient enregistré.

Par exemple comme celui-ci, badgetime

je stocke l'image et l'identification des badges dans une autre table comme ceci: ii

Comment les gars vous pensez que cela peut être achieved.can I modifier la procédure stockée ci-dessus ou vous suggérer une meilleure solution efficace pour cela. Je crois que j'ai besoin d'utiliser un déclencheur de mise à jour ici. Mais, comment vais-je l'utiliser sur la procédure stockée ci-dessus.

+0

Qu'est-ce que is'WeeklyHoursLogged'? – Sami

+0

C'est une partie de la condition sur la base de laquelle un badge est récompensé. Mon problème ici est différent. Toujours, merci. Dieu bénisse. – jane

+0

Je suggère de créer une table 'employee_badge'. – Sami

Répondre

1

S'il vous plaît vérifier avec le code suivant, si elle satisfait vos besoins: vous pouvez régler la requête en fonction de votre structure de la table et les données

--Badge Point Information

CREATE TABLE pointsBadge(EmployeeName VARCHAR(50), EmployeeID INT, badge1 INT, badge2 INT, badge3 INT, badge4 INT, badge5 INT) 
INSERT INTO pointsBadge VALUES 
('Lyka', 1122, 1, 1, 0, 0, 0), 
('Brinda', 2233, 0, 0, 0, 0, 0), 
('Anil', 34, 1, 1, 0, 0, 1) 

Table --Nouveaux à badge magasin de données employé sage avec horodatage en cours

CREATE TABLE employee_badge(id INT IDENTITY(1,1), employee_id INT, badge_id INT, earned_on DATETIME) 

--Badge Informations Table

--Trigger pour insérer des données dans la table employee_badge avec des données mises à jour

IF OBJECT_ID('[dbo].[TRGUpdate_badge_info]', 'TR') IS NOT NULL 
    DROP TRIGGER dbo.TRGUpdate_badge_info 
GO 

CREATE TRIGGER dbo.TRGUpdate_badge_info ON dbo.pointsBadge 
FOR UPDATE 
AS 
    INSERT INTO employee_badge 
    SELECT d.EmployeeID, 
      b.BadgeId, 
      GETDATE() 
    FROM pointsBadge p 
    INNER JOIN DELETED d ON p.EmployeeID = d.EmployeeID 
    INNER JOIN #badges b ON b.BadgeName = CASE WHEN (p.badge1 <> d.badge1) THEN 'Badge1' 
               WHEN (p.badge2 <> d.badge2) THEN 'Badge2' 
               WHEN (p.badge3 <> d.badge3) THEN 'Badge3' 
               WHEN (p.badge4 <> d.badge4) THEN 'Badge4' 
               WHEN (p.badge5 <> d.badge5) THEN 'Badge5' 
              END 
GO 

UPDATE pointsBadge SET badge5 = 2 WHERE employeeID = 1122 

SELECT * FROM employee_badge 
+0

Merci beaucoup ... vous êtes un génie. Dieu bénisse. @Suraz – jane