Anzeige von Text in PIVOT-Abfragen

25/09/2007 - 13:50 von marcus.kluttig | Report spam
Hi,

Ich habe folgende Abfrage:

SELECT con,tn,[1],[2],[3],[4] FROM
(
SELECT
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.CONSTRAINT_NAME AS 'con',
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_NAME AS 'tn',
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.ORDINAL_POSITION AS 'op',
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.COLUMN_NAME AS 'cn'
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE

) AS DATA

PIVOT(count(cn) FOR op IN ([1],[2],[3],[4])) AS pvt
ORDER BY con

Diese Abfrage soll alle Primàrschlüssel und dazugehörige Tabellen und
Spalten ausgeben.
Da manche Primàrschlüssel auch von mehreren Spalten abhànging sind
verwende ich die PIVOT-Funktion.
Diese Funktion soll mir ermöglichen, dass ich alle Spalten eines
Schlüssels in einen Datensatz bekomme.
Allerdings muss man bei PIVOT eine Aggregatfunktion verwenden(In der
Abfrage count()).
Ich möchte aber nicht die Anzahl der Spalten wissen sondern wie diese
heißen.
Gibt es eine Möglichkeit auf den Text zuzugreifen der sich in der
Spalte cn befindet?
Vll über das erste Element oder àhnlich?Kann mich nur entsinnen, dass
es bei Access soetwas gab.

Danke für eure Hilfe, Marcus

gibt es eine Möglichkeit
 

Lesen sie die antworten

#1 Elmar Boye
25/09/2007 - 22:30 | Warnen spam
Hallo Marucs,

schrieb ...
Ich habe folgende Abfrage:

SELECT con,tn,[1],[2],[3],[4] FROM
(
SELECT
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.CONSTRAINT_NAME AS 'con',
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_NAME AS 'tn',
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.ORDINAL_POSITION AS 'op',
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.COLUMN_NAME AS 'cn'
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE

) AS DATA

PIVOT(count(cn) FOR op IN ([1],[2],[3],[4])) AS pvt
ORDER BY con

Diese Abfrage soll alle Primàrschlüssel und dazugehörige Tabellen und
Spalten ausgeben.

Allerdings muss man bei PIVOT eine Aggregatfunktion verwenden(In der
Abfrage count()).
Ich möchte aber nicht die Anzahl der Spalten wissen sondern wie diese
heißen.



Verwende MIN(COLUM_NAME)

Für alle 16 möglichen (zukunftssicher) wirds nur etwas lànger:

SELECT CONSTRAINT_NAME, TABLE_NAME,
[1] AS column1, [2] AS column2, [3] AS column3, [4] AS column4,
[5] AS column5, [6] AS column6, [7] AS column7, [8] AS column8,
[9] AS column9, [10] AS column0, [11] AS column11, [12] AS column12,
[13] AS column13, [14] AS column14, [15] AS column15, [16] AS column16
FROM (SELECT CONSTRAINT_NAME,
TABLE_NAME,
ORDINAL_POSITION,
COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE) AS kcu
PIVOT (MIN(COLUMN_NAME)
FOR ORDINAL_POSITION IN
([1], [2], [3], [4], [5], [6], [7], [8],
[9], [10], [11], [12], [13], [14], [15], [16])
) AS p

Falls Dich die NULL stört schreib
ISNULL([1], 0) AS column1
usw.

Gruss
Elmar

Ähnliche fragen