select ... substring([Txt1],1,patindex('%-%',[Txt1])-1)as pretxt ...
e vorrei poter utilizzare nella stessa query il campo pretxt appena
creato :
..... newtxt= case
when pretxt like 'P%T' then 'P'...
...
...
senza quindi dover ripetere l'istruzione:
newtxt = case
when substring([Tag# Number],1,patindex('%-%',[Tag# Number])-1)
like 'P&T' then 'P'
...
...
.
.
è possibile?come posso fare?
grazie mille
ciao
Nick
no, non puoi.. l'esplosione delle colonne della select list e' un'operazione
atomica, e non puoi, a esempio, pensare di operare da sinistra verso destra
per riutilizzare delle proiezioni calcolate successivamente..
quindi devi ripetere esattamente la stessa formula ed estenderla come ti si
conviene..
oppure, partendo da SQL Server 2005, puoi fare ben uso di una common table
expression dove metterai tutta la logica di selezione in essa e, nel
successivo utilizzo, potrai riciclare la colonna calcolata che hai ottenuto
nella cte..
quindi qualche cosa di simile a
WITH cte AS (
SELECT col1,
col2 * 15 AS [colN],
substring([Txt1],1,patindex('%-%',[Txt1])-1)as pretxt
FROM xxx
WHERE yyy
)
SELECT col1, colN, pretxt, left(pretxt, 10) AS [part of pretext]
FROM cte;
saluti
--
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz
DbaMgr2k ver 0.21.1 - DbaMgr ver 0.65.1 and further SQL Tools
http://www.hotelsole.com - http://www.hotelsolericcione.de
--------- remove DMO to reply