Edelstein29 Geschrieben 5. April 2011 Teilen Geschrieben 5. April 2011 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 6. April 2011 Teilen Geschrieben 6. April 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Edelstein29 Geschrieben 6. April 2011 Autor Teilen Geschrieben 6. April 2011 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 ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 6. April 2011 Teilen Geschrieben 6. April 2011 (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 6. April 2011 von emetiel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.