2016-08-06 21 views
-1

Kann ich eine Spalte basierend auf einer WHERE-Klausel auswählen? Ich habe eine Tabelle in SQL Server 2012, die einen Verkäufercode hat, und alle zwölf Monate im Zahlenformat (01 = Januar, 02 = Februar, 03 = März usw.). Die Zeilen sind Dollarbeträge für Verkaufszahlen.SQL Server Spalte basierend auf der Abfrage auswählen

Ich möchte eine Zeile aus einem bestimmten Monat und Verkäufer-Code auswählen können. Meine Logik ist im Grunde wählen Betrag aus Tabelle mit Spalte = 07 und Code = 100.

Also im Grunde in der folgenden Tabelle, wie würde ich die Zeile für März und Verkäufer Code 200 (das ist 10006).

 
+-----------------------------------+------------+-------------+ 
| SalesPersonCode | Jan | Feb | Mar | Apr | Jun | and so on...| 
+-----------------------------------+------------+-------------+ 
| 100    |50003|13232|66565|65656|96656|  ...  | 
| 200    |65653|43432|10006|65236|23236|  ...  | 
| 300    |32131|43432|44343|56563|21212|  ...  | 
+-----------------------------------+------------+-------------+ 
+0

Bitte posten Sie Ihr Tabellenschema und klären, was Sie zu tun versuchen. Ich verstehe nicht. Versuchen Sie, die zu suchende Spalte dynamisch zu definieren, oder versuchen Sie, mehrere Spalten zu durchsuchen? –

+1

Entschuldigung - Ich habe ein grundlegendes Tabellenschema hinzugefügt. Ich versuche die zu suchende Spalte dynamisch zu definieren. – MrPeanutbutter

Antwort

-1

Sie haben verschiedene Tisch haben:

CREATE TABLE tbl_Sales(
SalesPersonCode INT, 
Period SMALLINT, 
Value INT 
) 
GO 

die Tabellenwerte erhalten, wie Sie die Daten Verschwenkung würde erfordern zeigte, aber für alles andere es wird viel einfacher/schneller zu extrahieren. Wie folgt aus:

SELECT Value FROM tbl_Sales 
WHERE SalesPersonCode = 100 and Period = 1607; 
+0

Ich denke, das OP beabsichtigte 'Spalte = 07' zu bedeuten" Suche die siebte Spalte ", nicht mit einer bestimmten Spalte namens" Spalte "übereinstimmen. Wenn es so einfach wäre, könnte das OP diese Abfrage nur ausführen. –

+0

@Robert Columbia Deine Kristallkugel ist besser als meine, weil ich keine habe. –

+1

Sorry Jungs - Ich habe die Frage geklärt. Ich konnte nicht herausfinden, wie man das Tabellenschema bis jetzt hinzufügt. – MrPeanutbutter

0

verstehe ich Ihre Frage Angenommen, Sie haben eine Tabelle mit einer Spalte salescode und 12 zusätzliche Spalten, eine für jeden Monat und jedes speichert ein amount Sie, indem in einem Parameter angezeigt werden soll?

Wenn ja, dann ist hier eine Option, um eine case Anweisung für jeden Monat mit:

select salescode, 
     case when @column = 1 then month1 
      when @column = 2 then month2 
      ... 
      when @column = 12 then month12 
     end as amount 
from yourtable 
where salescode = @salescode