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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht direkt, aber könnten Sie wickeln Sie es in einer untergeordneten select-Anweisung.
SQL-Anweisung
update
Glaube ich, Folgendes wäre äquivalent zu dem, was Sie schrieb:
q
ist tatsächlich nur ein Tabellen-alias erforderlich, die von SQL Server zum verweisen auf die Ergebnisse der innere select. Alle Namen tun würde. Es ist etwas, was ich abgeholt Quassnoi so