Forum Discussion
SQLDBA201400
Feb 20, 2025Copper Contributor
Query Help to show record in single row
Hi All, need help with an SQL query. Currently we are getting Start and End BNames on separate rows. DECLARE @tblData TABLE
(BName varchar(50),
StartDate varchar(10),
StartTime varch...
YuriyZaletskyy
Feb 22, 2025Copper Contributor
You can achieve this by using LEFT JOIN and matching the "Start" and "End" entries based on the BName prefix. Here's an SQL query to format your expected output:
DECLARE @tblData TABLE
(BName varchar(50),
StartDate varchar(10),
StartTime varchar(10))
INSERT INTO @tblData (BName, StartDate, StartTime) VALUES ('STAT Start','02/20/2025','00:34:02')
INSERT INTO @tblData (BName, StartDate, StartTime) VALUES ('STAT End','02/20/2025','00:40:36')
INSERT INTO @tblData (BName, StartDate, StartTime) VALUES ('CDS Start','02/20/2025','00:40:38')
INSERT INTO @tblData (BName, StartDate, StartTime) VALUES ('CDS End','02/20/2025','00:47:26')
INSERT INTO @tblData (BName, StartDate, StartTime) VALUES ('LED Start','02/20/2025','00:40:42')
INSERT INTO @tblData (BName, StartDate, StartTime) VALUES ('LED End','02/20/2025','00:54:28')
SELECT
StartData.BName,
StartData.StartDate,
StartData.StartTime,
EndData.StartDate AS EndDate,
EndData.StartTime AS EndTime
FROM
@tblData StartData
LEFT JOIN
@tblData EndData
ON REPLACE(StartData.BName, ' Start', '') = REPLACE(EndData.BName, ' End', '')
AND StartData.StartDate = EndData.StartDate
AND EndData.BName LIKE '% End'
WHERE
StartData.BName LIKE '% Start'
ORDER BY
StartData.StartDate, StartData.StartTime;
SivertSolem
Feb 25, 2025Iron Contributor
The `ON REPLACE(StartData.BName, ' Start', '') = REPLACE(EndData.BName, ' End', '')` is a lot neater than my `SUBSTRING` shenanigans.
Nice.