MachineGUID Region Machine USERID DevicePurpose CompanyCode MailCode Model Status
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER1 Not Available 00603-9291277 474-086-02-01 Tier 2 IN USE
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER2 Not Available 00587-1000211 739-601-07-01 Tier 2 IN USE
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER3 Not Available 00603-9291277 474-086-02-01 Tier 2 IN USE
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER4 Not Available 00603-9291277 474-086-02-01 Tier 2 IN USE
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER5 Not Available 00603-9291277 474-086-02-01 Tier 2 IN USE
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER6 Not Available 00603-9291277 474-086-02-01 Tier 2 IN USE
and make it look like thisMachineGUID Region Machine USERID DevicePurpose CompanyCode MailCode Model Status
VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54 EMEA MACHINE1 USER1,USER2,USER3,USER4,USER5,USER6 Not Available 00603-9291277 474-086-02-01 Tier 2 IN USE
ASKER
ASKER
DECLARE @LastLoggedOn TABLE
(
Machine VARCHAR(100),
UserID VARCHAR(100)
)
INSERT @LastLoggedOn
VALUES
('MACHINE3', 'USER7')
DECLARE @Machine TABLE
(
MachineGUID VARCHAR(500),
Region VARCHAR(100),
Machine VARCHAR(100),
UserID VARCHAR(500),
DevicePurpose VARCHAR(100),
CompanyCode VARCHAR(100),
MailCode VARCHAR(100),
Model VARCHAR(100),
[Status] VARCHAR(100)
);
INSERT @Machine
VALUES
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER1', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER2', 'Not Available', '00587-1000211', '739-601-07-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER3', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER4', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER5', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER6', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER1', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER2', 'Not Available', '00587-1000211', '739-601-07-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER3', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER4', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 58', 'EMEA', 'MACHINE3', 'USER7', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 58', 'EMEA', 'MACHINE3', 'USER8', 'Not Available', '00603-9291288', '474-086-03-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 57', 'EMEA', 'MACHINE4', 'USER5', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER6', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE');
WITH cteMachineCompanyCode AS
(
SELECT MachineGUID, CompanyCode, COUNT(CompanyCode) as CompanyCodeCnt, MailCode,
COUNT(MachineGUID) AS [Count],
ROW_NUMBER() OVER(ORDER BY COUNT(MachineGUID) DESC) AS RowNumber
FROM @Machine
GROUP BY MachineGUID, CompanyCode, MailCode
)
SELECT DISTINCT M.MachineGUID, M.Region, M.Machine,
STUFF(
(
SELECT ',' + UserID
FROM @Machine
WHERE MachineGUID = M.MachineGUID
ORDER BY UserID
FOR XML PATH('')
), 1, 1, '') AS UserID,
M.DevicePurpose,
MC.CompanyCode, MC.CompanyCodeCnt, MC.MailCode, M.Model, M.Status
FROM @Machine AS M
INNER JOIN cteMachineCompanyCode AS MC
ON M.MachineGUID = MC.MachineGUID
--AND MC.CompanyCodeCnt > 1
--AND MC.CompCnt > 1
--AND MC.RowNumber = 1
ORDER BY M.Machine ASC
ASKER
ASKER
DECLARE @LastLoggedOn TABLE
(
Machine VARCHAR(100),
UserID VARCHAR(100)
)
INSERT @LastLoggedOn
VALUES
('MACHINE3', 'USER7')
DECLARE @Machine TABLE
(
MachineGUID VARCHAR(500),
Region VARCHAR(100),
Machine VARCHAR(100),
UserID VARCHAR(100),
DevicePurpose VARCHAR(100),
CompanyCode VARCHAR(100),
MailCode VARCHAR(100),
Model VARCHAR(100),
[Status] VARCHAR(100)
);
DECLARE @MachineOut TABLE
(
MachineGUID VARCHAR(500),
Region VARCHAR(100),
Machine VARCHAR(100),
UserID VARCHAR(500),
DevicePurpose VARCHAR(100),
CompanyCode VARCHAR(100),
CompanyCodeCnt INT,
MailCode VARCHAR(100),
Model VARCHAR(100),
[Status] VARCHAR(100)
);
INSERT @Machine
VALUES
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER1', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER2', 'Not Available', '00587-1000211', '739-601-07-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER3', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER4', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER5', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER6', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER1', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER2', 'Not Available', '00587-1000211', '739-601-07-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER3', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER4', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 58', 'EMEA', 'MACHINE3', 'USER7', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 58', 'EMEA', 'MACHINE3', 'USER8', 'Not Available', '00603-9291288', '474-086-03-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 57', 'EMEA', 'MACHINE4', 'USER5', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER6', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE');
WITH cteMachineCompanyCode AS
(
SELECT MachineGUID, CompanyCode, COUNT(CompanyCode) as CompanyCodeCnt, MailCode,
COUNT(MachineGUID) AS [Count],
ROW_NUMBER() OVER(ORDER BY COUNT(MachineGUID) DESC) AS RowNumber
FROM @Machine
GROUP BY MachineGUID, CompanyCode, MailCode
)
INSERT INTO @MachineOut
SELECT DISTINCT M.MachineGUID, M.Region, M.Machine,
STUFF(
(
SELECT ',' + UserID
FROM @Machine
WHERE MachineGUID = M.MachineGUID
ORDER BY UserID
FOR XML PATH('')
), 1, 1, '') AS UserID,
M.DevicePurpose,
MC.CompanyCode, MC.CompanyCodeCnt, MC.MailCode, M.Model, M.Status
FROM @Machine AS M
INNER JOIN cteMachineCompanyCode AS MC
ON M.MachineGUID = MC.MachineGUID
ORDER BY M.Machine ASC
Select MachineGUID, Region, Machine, UserID, DevicePurpose, CompanyCode, CompanyCodeCnt, MailCode, Model, [Status] from @MachineOut
where CompanyCodeCnt > 1
UNION
Select MachineGUID, Region, Machine, UserID, DevicePurpose, CompanyCode, CompanyCodeCnt, MailCode, Model, [Status] from @MachineOut
where CompanyCodeCnt = 1 AND UserID NOT LIKE '%,%'
UNION
Select mco.MachineGUID, mco.Region, mco.Machine, mco.UserID, mco.DevicePurpose, mco.CompanyCode, mco.CompanyCodeCnt, mco.MailCode, mco.Model, mco.[Status] from @MachineOut mco
LEFT JOIN @LastLoggedOn lg ON mco.UserID = lg.UserID
GROUP BY mco.MachineGUID, mco.Region, mco.Machine, mco.UserID, mco.DevicePurpose, mco.CompanyCode, mco.CompanyCodeCnt, mco.MailCode, mco.Model, mco.[Status]
HAVING SUM(LEN(mco.UserID) - LEN(REPLACE(mco.UserID,',','')) + 1) = 2
ASKER
DECLARE @LastLoggedOn TABLE
(
Machine VARCHAR(100),
UserID VARCHAR(100),
CompanyCode VARCHAR(100)
)
INSERT @LastLoggedOn
VALUES
('MACHINE3', 'USER7', '00603-9291277')
DECLARE @Machine TABLE
(
MachineGUID VARCHAR(500),
Region VARCHAR(100),
Machine VARCHAR(100),
UserID VARCHAR(100),
DevicePurpose VARCHAR(100),
CompanyCode VARCHAR(100),
MailCode VARCHAR(100),
Model VARCHAR(100),
[Status] VARCHAR(100)
);
DECLARE @MachineOut TABLE
(
MachineGUID VARCHAR(500),
Region VARCHAR(100),
Machine VARCHAR(100),
UserID VARCHAR(500),
DevicePurpose VARCHAR(100),
CompanyCode VARCHAR(100),
CompanyCodeCnt INT,
MailCode VARCHAR(100),
Model VARCHAR(100),
[Status] VARCHAR(100)
);
INSERT @Machine
VALUES
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER1', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER2', 'Not Available', '00587-1000211', '739-601-07-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER3', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER4', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 54', 'EMEA', 'MACHINE1', 'USER5', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER6', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER1', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER2', 'Not Available', '00587-1000211', '739-601-07-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER3', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER4', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 58', 'EMEA', 'MACHINE3', 'USER7', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 58', 'EMEA', 'MACHINE3', 'USER8', 'Not Available', '00603-9291288', '474-086-03-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 57', 'EMEA', 'MACHINE4', 'USER5', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE'),
('VMWARE-42 01 02 AF F4 45 62 4A-5A E0 95 9A 00 BA 2C 55', 'EMEA', 'MACHINE2', 'USER6', 'Not Available', '00603-9291277', '474-086-02-01', 'Tier 2', 'IN USE');
WITH cteMachineCompanyCode AS
(
SELECT MachineGUID, CompanyCode, COUNT(CompanyCode) as CompanyCodeCnt, MailCode,
COUNT(MachineGUID) AS [Count],
ROW_NUMBER() OVER(ORDER BY COUNT(MachineGUID) DESC) AS RowNumber
FROM @Machine
GROUP BY MachineGUID, CompanyCode, MailCode
)
INSERT INTO @MachineOut
SELECT DISTINCT M.MachineGUID, M.Region, M.Machine,
STUFF(
(
SELECT ',' + UserID
FROM @Machine
WHERE MachineGUID = M.MachineGUID
ORDER BY UserID
FOR XML PATH('')
), 1, 1, '') AS UserID,
M.DevicePurpose,
MC.CompanyCode, MC.CompanyCodeCnt, MC.MailCode, M.Model, M.Status
FROM @Machine AS M
INNER JOIN cteMachineCompanyCode AS MC
ON M.MachineGUID = MC.MachineGUID
ORDER BY M.Machine ASC
Select MachineGUID, Region, Machine, UserID, DevicePurpose, CompanyCode, CompanyCodeCnt, MailCode, Model, [Status] from @MachineOut
where CompanyCodeCnt > 1
UNION
Select MachineGUID, Region, Machine, UserID, DevicePurpose, CompanyCode, CompanyCodeCnt, MailCode, Model, [Status] from @MachineOut
where CompanyCodeCnt = 1 AND UserID NOT LIKE '%,%'
UNION
Select mco.MachineGUID, mco.Region, mco.Machine, mco.UserID, mco.DevicePurpose, mco.CompanyCode, mco.CompanyCodeCnt, mco.MailCode, mco.Model, mco.[Status] from @MachineOut mco
INNER JOIN @LastLoggedOn lg ON mco.Machine = lg.Machine AND mco.CompanyCode = lg.CompanyCode
--WHERE mco.Machine = lg.Machine
GROUP BY mco.MachineGUID, mco.Region, mco.Machine, mco.UserID, mco.DevicePurpose, mco.CompanyCode, mco.CompanyCodeCnt, mco.MailCode, mco.Model, mco.[Status]
HAVING SUM(LEN(mco.UserID) - LEN(REPLACE(mco.UserID,',','')) + 1) = 2
ASKER
Microsoft SQL Server is a suite of relational database management system (RDBMS) products providing multi-user database access functionality.SQL Server is available in multiple versions, typically identified by release year, and versions are subdivided into editions to distinguish between product functionality. Component services include integration (SSIS), reporting (SSRS), analysis (SSAS), data quality, master data, T-SQL and performance tuning.
TRUSTED BY
Open in new window
by the way: I placed your data in the question into code blocks so it is easier to read. (Look for the word CODE in the comment toolbar and paste between the tags.)