Zum Inhalt springen

sql 2005 - variable spalte


Edelstein29

Empfohlene Beiträge

Hallo Forenleser,

wie kann ich eine Variable Spaltenabfrage machen z.B.

select vosvjs + @Variable from vosv

in der Tabelle vosv hat es für jeden Wochentag eine Spalte(ja/Nein)

vosvjsmo

vosvjsdi

vosvjsmi

usw

die Variable beinhaltet den morgigen Tag, dies habe ich bereits.

declare @columnname char(2)

declare @wtag int

set @wtag = CONVERT (nvarchar(10), datepart(dw,GETDATE() + 1), 120)

set @columnname =

case @wtag

when 1 then 'so'

when 2 then 'mo'

when 3 then 'di'

when 4 then 'mi'

when 5 then 'do'

when 6 then 'fr'

when 7 then 'sa'

end

leider geht der select nicht

select vosvjs + @Variable from vosv

dieser nimmt den Wert aus der Spalte vosvjs, die es auch gibt und ergänzt den Wert mit der Variable.

Resultat ist --> no column name

0 mi

wer kann weiterhelfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

jo ... ms sql2005

diese variante hab ich befürchtet. das ganze in einen string setzen und exec ... leider ist der select nur ein ganz kleiner auszug des ganzen

hier der ganze sql

SELECT UPPER(REPLACE(LEFT(RTRIM(dbo.VOZA.vozabez), 5), ' ', '')) AS VC_NR, RTRIM(dbo.ABVO.ABVOBEZ) AS VC_NAME,

CONVERT(nvarchar(10), GETDATE(), 112) AS FILE_DATE, RTRIM(dbo.ABO01VRX.AVREXTNR) AS BEZIRK, RTRIM(dbo.ABO01VRX.AVRORT1)

AS ORT_BEZIRK, RTRIM(dbo.ABO01VRX.avrplz1) + RTRIM(dbo.ABO01VRX.avrplzzz1) AS PLZ_BEZIRK, dbo.VOAD.voadadnr AS GP_NR,

RTRIM(dbo.VOAD.voadpersnr) AS PERS_NR, RTRIM(dbo.VOAD.voadanrede) AS ANREDE, RTRIM(dbo.VOAD.voadvorname) AS VORNAME,

RTRIM(dbo.VOAD.voadname) AS NAME, DATEPART(day, dbo.VOAD.voadgebdat) AS GEB_DAT_TT, DATEPART(month, dbo.VOAD.voadgebdat)

AS GEB_DAT_MM, DATEPART(year, dbo.VOAD.voadgebdat) AS GEB_DAT_JJJJ, CONVERT(nvarchar(10), dbo.VOAD.voadgebdat, 104) AS GEB_DATUM,

RTRIM(dbo.VOAD.voadtel1) AS [TEL_NR P], RTRIM(dbo.VOAD.voadtel2) AS [TEL_NR G], RTRIM(dbo.VOAD.voadtel3) AS [TEL_NR N],

RTRIM(dbo.VOAD.voadstrasse) + ' ' + RTRIM(dbo.VOAD.voadhausnr) AS STRASSE, RTRIM(dbo.VOAD.voadplz) AS PLZ, RTRIM(dbo.VOAD.voadort)

AS ORT, 'CH' AS Land, RTRIM(dbo.VOAD.voademail1) AS [E-Mail], RTRIM(dbo.VOAD.voademail2) AS [E-Mail2],

dbo.ABO01VRX.AVRINTNR AS VRX_NR

FROM dbo.ABO01VRX INNER JOIN

dbo.ABVO ON dbo.ABO01VRX.avrvonr = dbo.ABVO.ABVOVONR INNER JOIN

dbo.VOZA ON dbo.ABO01VRX.avrzanr = dbo.VOZA.vozazanr INNER JOIN

dbo.VOSV ON dbo.ABO01VRX.AVRINTNR = dbo.VOSV.vosvvrnr INNER JOIN

dbo.VOAD ON dbo.VOSV.vosvadnr = dbo.VOAD.voadadnr INNER JOIN

dbo.View_ASK_Routen_StammJSE ON dbo.ABO01VRX.AVRINTNR = dbo.View_ASK_Routen_StammJSE.AVRINTNR

WHERE (dbo.VOAD.deleted = '0') AND (dbo.VOSV.deleted = '0') AND (CONVERT(nvarchar(10), dbo.VOSV.vosvvon, 120) <= CONVERT(nvarchar(10), GETDATE()

+ 1, 120)) AND (CONVERT(nvarchar(10), dbo.VOSV.vosvbis, 120) >= CONVERT(nvarchar(10), GETDATE() + 1, 120)) AND (dbo.VOSV.vosvjs = '1') AND

(dbo.VOSV.vosvjsmo = '1') OR

(dbo.VOAD.deleted = '0') AND (dbo.VOSV.deleted = '0') AND (CONVERT(nvarchar(10), dbo.VOSV.vosvvon, 120) <= CONVERT(nvarchar(10), GETDATE() + 1,

120)) AND (CONVERT(nvarchar(10), dbo.VOSV.vosvbis, 120) IS NULL) AND (dbo.VOSV.vosvjs = '1') AND (dbo.VOSV.vosvjsmo = '1')

ORDER BY VC_NR, BEZIRK

aber ich komme wohl nicht drumherum ....

nun hänge ich aber schon wieder, und zwar:

SELECT UPPER(REPLACE(LEFT(RTRIM(dbo.VOZA.vozabez), 5), ' ', '')) AS VC_NR

als string sieht das ja dann so aus:

set @sql = 'select UPPER(REPLACE(LEFT(RTRIM(dbo.VOZA.vozabez), 5), ' + ....

wie bekomme ich die hochkommas (' ', '') in den string ... da gibts doch so ein ganz spezielles vorzeichen welches diese als text definiert.

danke schonmal für den ersten tip ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

was das angeht bin ich sehr sehr altmodisch :)

um ein ' in einen String zu bekommen nutze ich nach wie vor '''

also 'SELECT UPPER(REPLACE(LEFT(RTRIM(dbo.VOZA.vozabez), 5), ''' ''', '''''')) AS VC_NR oder so ähnlich

Ist nicht die eleganteste aller Lösungen. Vor allem dann nicht, wenn Du eine Menge ' in dem Select hast.

Alternativ kannst Du evtl das hier verwenden

SET QUOTED_IDENTIFIER OFF;

GO

" 'SELECT UPPER(REPLACE(LEFT(RTRIM(dbo.VOZA.vozabez), 5), ' ', '')) AS VC_NR'"

Da bin ich mir aber nicht sicher

Bearbeitet von emetiel
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...