Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

Hi,

mit sql 2005 meinst Du MS Sql Server 2005?

Wenn ja

declare @MySqlString nvarchar(4000);

set @MySqlString = 'select vosvjs' + @Variable + ' from vosv'

exec sp_executesql @MySqlString

Geschrieben

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

Geschrieben (bearbeitet)

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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