Dies sollte jedoch arbeiten Sie versuchen müssen, können und es dynamisch zu machen, wenn Sie Ihre Werte in C2 sind nicht immer [MP], [KL], [OL], [IFL]
Seien Sie auch vorsichtig sein würde CROSS JOIN
verwenden, wenn Ihre Datensätze relativ groß sind:
SAMPLE DATA:
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #temp;
CREATE TABLE #temp(C1 INT
, C2 VARCHAR(10));
INSERT INTO #temp
VALUES
(1
, 'MP'),
(2
, 'KL'),
(3
, 'OL'),
(3
, 'IFL');
QUERY:
SELECT DISTINCT
C1
, [MP] = CASE
WHEN [MP] = C1 THEN 'TRUE'
ELSE ''
END
, [KL] = CASE
WHEN [KL] = C1 THEN 'TRUE'
ELSE ''
END
, [OL] = CASE
WHEN [OL] = C1 THEN 'TRUE'
ELSE ''
END
, [IFL] = CASE
WHEN [IFL] = C1 THEN 'TRUE'
ELSE ''
END
FROM #temp AS A
CROSS JOIN
(SELECT [MP]
, [KL]
, [OL]
, [IFL]
FROM
(SELECT C1
, C2
FROM #temp) AS SourceTable PIVOT(MAX(C1) FOR C2 IN([MP]
, [KL]
, [OL]
, [IFL])) AS PivotTable) AS B;
ERGEBNIS:
können Sie anfangen zu studieren über 'PIVOT'; Probieren Sie einen Code aus und kommen Sie hier zurück – techspider
"Ich muss dies tun, ohne SQL zu verwenden" - wie genau erwarten Sie, es zu tun? –
Entschuldigung. Ich wollte dies tun, ohne einen neuen gespeicherten Proc oder irgendwelche temporären Tabellen, Cursor usw. Bearbeitete meine Frage jetzt. Ich lerne nun Pivot in SQL. Aber dieser scheint selbst mit Pivot-Tabellen schwierig zu sein. – Saranya