При выборе нижеприведенных данных я хочу сделать так, чтобы я мог группировать по столбцам так, чтобы было все "Y".На изображении ниже показано, как это выглядит в настоящее время:
Второе изображение показывает, какконечный результат должен выглядеть следующим образом.
SELECT p.FirstName
,p.Surname
,CASE
WHEN a.ActivityName = 'Jumping' THEN 'Y'
ELSE 'N'
END AS 'Jumping'
,CASE
WHEN a.ActivityName = 'Dancing' THEN 'Y'
ELSE 'N'
END AS 'Dancing'
,CASE
WHEN a.ActivityName = 'Walking' THEN 'Y'
ELSE 'N'
END AS 'Walking'
FROM #TempActivity a
INNER JOIN #TempPerson p ON a.AID = p.ActivityID
WHERE FirstName = 'John'
AND Surname = 'Smith'
Ниже я скопировал весь процесс создания таблицы, чтобы вы могли видеть все данные и структуру таблицы.Я сообщаю, что есть лучший способ создания таблиц в этом случае, но это всего лишь пример, так что я знаю способ применения в другом месте;
CREATE TABLE #TempActivity(
AID INT
,ActivityName VARCHAR(100)
)
CREATE TABLE #TempPerson(
PID INT
,FirstName VARCHAR(100)
,Surname VARCHAR(100)
,ActivityID INT
)
INSERT INTO #TempActivity
VALUES (1,'Jumping')
,(2,'Dancing')
,(3,'Walking')
INSERT INTO #TempPerson
VALUES (1,'John', 'Smith', 1)
,(2,'John', 'Smith', 2)
,(3,'John', 'Smith', 3)
,(4,'Jane','Smith', 1)
,(5,'Jane','Smith', 2)
SELECT * FROM #TempActivity
SELECT * FROM #TempPerson
SELECT p.FirstName
,p.Surname
,a.ActivityName
FROM #TempActivity a
INNER JOIN #TempPerson p ON a.AID = p.ActivityID
WHERE FirstName = 'John'
AND Surname = 'Smith'
SELECT p.FirstName
,p.Surname
,CASE
WHEN a.ActivityName = 'Jumping' THEN 'Y'
ELSE 'N'
END AS 'Jumping'
,CASE
WHEN a.ActivityName = 'Dancing' THEN 'Y'
ELSE 'N'
END AS 'Dancing'
,CASE
WHEN a.ActivityName = 'Walking' THEN 'Y'
ELSE 'N'
END AS 'Walking'
FROM #TempActivity a
INNER JOIN #TempPerson p ON a.AID = p.ActivityID
WHERE FirstName = 'John'
AND Surname = 'Smith'
DROP TABLE #TempActivity;
DROP TABLE #TempPerson;