テーブルGrouping
からテーブルGroupid(PK)、Sensorid(FK)がありSensor
ます。また、Sensor
テーブルには外部キー参照としてUnitsidがあります。そこで、このクエリを使用して、3つのテーブルからすべての列を取得しました。
Select * from Grouping
left join Sensors on Grouping.SensorID = Sensors.SensorID
left joinUnits on Grouping.UnitsID = Units.UnitsID
出力:
Group Unit Sensor
G1 U1 S1
G1 U2 S2
G1 U1 S4
G1 U1 S3
G1 U2 S5
G2 U1 S7
私の問題は、次のような出力が必要なことです。
G1 U1 S1,S3,S4
G1 U2 S2,S5
G2 U1 S7
'Grouping'テーブルからこの出力を取得するにはどうすればよいですか?
WITH CTE
AS
(
Select * fromGrouping
left join Sensors on Grouping.SensorID = Sensors.SensorID
left join Units onGrouping.UnitsID = Units.UnitsID
)
SELECT
t1."Group",
t1.Unit ,
STUFF((
SELECT ', ' + t2.Sensor
FROM Grouping t2
WHERE t2."Group" = t1."Group"
AND t2.Unit = t1.Unit
FOR XML PATH (''))
,1,2,'') AS Sensors
FROM Grouping t1
GROUP BY t1."Group", t1.Unit;
グループ化テーブルにはsensorIdとunitsIdしかないため、これは機能しません。そのため、無効な列エラーがスローされます。