Wert aus Abfrage als Kombinierte SELECT Abfrage

ChrisKoch

Neuer Benutzer
Beiträge
3
Hey Leute,

ich bin neu hier nd habe ein wichtiges Anliegen, be dem ch einfach nicht weiterkomme:

Ich soll Daten aus einer MS SQL Datenbank auswerten und habe gerade eine bestimmte Aufgabe.

Die Datenbank beinhaltet ~5Mio Datensätze, mein Ziel ist es, mithilfe von PowerPivot Reports zu erstellen.
=========================

Folgende Aufgabe habe ich:

Es gibt Drucker, die haben die möglichkeit Duplex zu drucken. Ich soll herausfinden, wie viele der Duplexfähigen Drucker wirklich Duplexdrucke durchführen und wenn ja wie viele Seiten.

Fünf Tabellen aus der Datenbank sind dafü relevant:

PROPERTYDEF, PROPERTYVALUES, DEVICES -> zur Spezifizierung: ist es ein Duplex oder nicht?
- kein Problem

COUNTERTEMPLATE, COUNTERVALUES -> Welche Counternummer für welche Counterbezeichnung.

Ich konzentriere mic zunächst auf die Contertabellen:


COUNTERTEMPLATE
===============
UserId | Name des Counters | SpaltenNummer

COUNTERVALULES
==============
DeviceId | Viele Spalten (C1-C50) | TimeUTC

Nun wie sind diese verknüpft?

COUNTERTEMPLATE und COUNTERDEF sind nicht irekt verknüpfbar, und das ist auch mein Problem.

Jenach User hatbeispielsweise der Countername DuplexTotalGedruckt die Spaltennummer 22, 21, 24 oder 26 als INTEGER.

Ich möchte eine Abfrage machen, die diese Counternummer nimmt, ein C ohne Leerzichen davorpackt und als SELECT für die Tabelle COUNTERVALUES verwendet.


Ich habe schon mit Variablen rumprobiert aber ich bekommealsErgebnis immer NULL.

Code:
DECLARE @temp AS varchar(255), @command varchar(400);
SET @command = 'SELECT ZeilenNummer INTO ' + @temp + 'FROM COUNTERTEMPLATE ct, WHERE  ct.PrMibName =`PrMIBDuplexTotal`';
EXEC(@command)
SELECT 'C'+@temp, DeviceId, TimeUTC
FROM COUNTERVALUES

Ich hoffe, dass Ihr verstanden habt, was ich möchte und mir helfen könnt ...
 
Werbung:
Auch wenn der Thread etwas alt ist, ist das Problem noch aktuell?

Dynamisches SQL ist hier auf jedenfall notwendig. Allerdings wird in deinem Beispiel @temp nicht befüllt, ist also NULL. Dadurch wird @command auch NULL.

Du müsstest außerdem für jeden User / Drucker einen Select basteln (da ja die Counter in verschiedenen Spalten stehen) und das Ergebniss für die Auswertung verketten. Keine schöne Sache, das Tabellendesign ist auch etwas fragwürdig.
 
hey,

ja ein sehr fragliches DB-Design ... ist so gewachsen mit den Jahren...

ich habe das nun so gelöst, dass ich Viws bekomme, mit benannten Columns. Wie das gemacht wird sei mir egal :) Ich werde zu jedem Drucker den passenden Zähler zugeordnet bekommen...


Ich stelle nun mal eine andere Frage in einen eigenen Thread ... du scheinst dich gut auszukennen und es wird für dich wahrscheinlich kein Problem - ich verzweifel an Denkfehlern ...
 
Werbung:
Zurück
Oben