MSSQL - Definieren Sie den Namen einer Spalte in der SELECT-Anweisung verwenden Sie dann, dass in der WHERE-Klausel

gibt es eine Möglichkeit, Sie zu verwenden angegebenen Spaltennamen in der SELECT-Anweisung mit WHERE-Klausel?
Hier ist mein t-sql-codes,

SELECT CONVERT(DATETIME,(
    CASE WHEN Operator = 'T' THEN 
        (SUBSTRING(SendDate,7,4)+'-'+SUBSTRING(SendDate,4,2)+'-'+ 
        SUBSTRING(SendDate,1,2) + SUBSTRING(SendDate,11,9)) 
    ELSE 
        RecivedSMS.SendDate 
    END)) AS DefinedDate 
WHERE DATEPART(wk, DefinedDate) =  52

Yours liebevoll und danke Ihnen sehr für Ihre Hilfe schon jetzt.

Bearbeitet Teil gepostet

CREATE TABLE #TEMP
(
DateField DATETIME,
NumberField VARCHAR(10),
Sender VARCHAR(255)
)

INSERT #TEMP
SELECT DISTINCT(
CONVERT(DATETIME, ( 
                    CASE WHEN Operator = 'T' 
                    THEN (  SUBSTRING( SendDate, 7, 4 ) + '-'
                            + SUBSTRING( SendDate, 4, 2 ) + '-'
                            + SUBSTRING( SendDate, 1, 2 )
                            + SUBSTRING( SendDate, 11, 9 )
                         ) 
                    ELSE SendDate 
                    END))) AS Table1.DateField,

SUBSTRING(Table1.Message,7,7) AS NumberField

FROM Table1
INNER JOIN 
Table2 ON Table1.Sender = Table2.PhoneNumber,
(
          SELECT  CONVERT(DATETIME, ( 
                    CASE WHEN Operator = 'T' 
                    THEN (  SUBSTRING( SendDate, 7, 4 ) + '-'
                            + SUBSTRING( SendDate, 4, 2 ) + '-'
                            + SUBSTRING( SendDate, 1, 2 )
                            + SUBSTRING( SendDate, 11, 9 )
                         ) 
                    ELSE SendDate 
                    END)) AS DefinedDate 
          FROM    Table1 WHERE Table1.Operator IS NOT NULL
        ) q  
WHERE Operator IS NOT NULL AND SUBSTRING(Table1.Message,1,6) = 'TREE ST'  AND DATEPART( wk, q.DefinedDate ) =  52 AND DATEPART(year, q.DefinedDate ) = 2010


SELECT *  FROM #TEMP ORDER BY NumberField

DROP TABLE #TEMP
  • Die WHERE-Klausel passiert (logisch, semantisch) vor der SELECT-Liste der Spalte verwendet werden, so dass eine Spalte alias auf der gleichen Ebene ist nicht sichtbar es. UM zum Beispiel passiert, wenn die Spalte-Liste, so dass es kann sehen Sie eine Spalte mit alias auf dem gleichen Niveau.
  • Was scheint das problem zu sein mit den bearbeiteten code?
InformationsquelleAutor Kerberos | 2010-12-20
Schreibe einen Kommentar