Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

sql 2005 - variable spalte

Empfohlene Antworten

Veröffentlicht

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?

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 ...

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.