MS SQL Server le tableau croisé dynamique avec une sous-requête dans la colonne de la clause
Im sûr que c'est une technique simple mais je n'arrive pas à trouver une réponse à ce jour!
J'ai
TIMESTAMP | POINTNAME | VALUE
2012-10-10 16:00:00 AHU01 20
2012-10-10 16:00:00 AHU02 25
2012-10-10 16:00:15 AHU01 26
2012-10-10 16:00:15 AHU02 35
etc... ( pour environ 800 POINTNAMES)
avec de nombreux pointnames je ne veux pas de liste de chacun dans le "DANS" la clause du pivot "POUR"
(la syntaxe indiquée ci-dessous) de la définition, mais souhaitez peut-être utiliser une sous-requête.
Donc ce que je voudrais, c'est tous les POINTNAME valeurs TIMESTAMP ET la VALEUR de la colonne, je vais donc faire une valeur d'HORODATAGE et de nombreuses colonnes avec chaque POINTNAME, il n'y a qu'une seule valeur par POINTNAME PAR TIMESTAMP je n'ai pas besoin de quoi que ce soit globale il suffit donc de choisir max de toute façon?
Quelque chose comme:
SELECT [TIMESTAMP] FROM ( SELECT * FROM POINT_TABLE)
PIVOT( Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
produirait-
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
Je réalise que ce n'est probablement pas simple, mais j'espère que vous obtenez ce que je suis en train de réaliser?
PIVOT SYNTAXE:
SELECT <non-pivoted column>,
[first pivoted column] AS <column name>,
[second pivoted column] AS <column name>,
...
[last pivoted column] AS <column name>
FROM
(<SELECT query that produces the data>)
AS <alias for the source query>
PIVOT
(
<aggregation function>(<column being aggregated>)
FOR
[<column that contains the values that will become column headers>]
IN ( [first pivoted column], [second pivoted column],
... [last pivoted column])
) AS <alias for the pivot table>
<optional ORDER BY clause>;
OriginalL'auteur user1801843 | 2012-11-06
Vous devez vous connecter pour publier un commentaire.
pour la dynamique d'un nombre de colonnes que vous devez utiliser SQL dynamique
SQL VIOLON EXEMPLE
Et puis créer un nouveau tableau sur la base des résultats? Désolé encore un débutant!
Voulez-vous créer une table temporaire, sur la base des résultats? Ou voulez-vous créer une vraie table?
Je pense que d'une table réelle, mais de trouver comment les deux serait sympa! 🙂
J'ai aussi une autre colonne, je ne l'ai pas mentionné pour des raisons de simplicité appelé la "Qualité" quand le point de données n'obtient pas de communiqué une pointname peut avoir une "MAUVAISE" qualité avec une valeur de 0. Comment pourrais-je ignorer cette colonne, mais encore prendre la valeur zéro. c'est à dire d'HORODATAGE | POINTNAME | VALEUR | QUALITÉ 2012-10-10 16:00:00 AHU01 0 MAUVAIS
OriginalL'auteur Roman Pekar