请帮助更正一些快速SQL语法,新列上的内部联接
好吧,假设我的表中有Col1、Col2和COl3。但是,[Interval]没有请帮助更正一些快速SQL语法,新列上的内部联接,sql,syntax,inner-join,Sql,Syntax,Inner Join,好吧,假设我的表中有Col1、Col2和COl3。但是,[Interval]没有 Select Col1,Col2,Col3, [Interval] = CASE WHEN (cast(segstart as float) - floor(cast(segstart as float))) >= (cast(@TweleveAM as float) - floor(cast(@TweleveAM as float))) THEN CAST('0' as smallint) End FROM
Select Col1,Col2,Col3, [Interval] = CASE
WHEN (cast(segstart as float) - floor(cast(segstart as float))) >= (cast(@TweleveAM as float) - floor(cast(@TweleveAM as float))) THEN CAST('0' as smallint) End
FROM MyTable
但是现在我想使用我在一个join中创建的新列,就像这样
Inner Join NewTable New on Interval = New.starttime
我该怎么做?我似乎找不到正确的语法大多数rmdbs不允许在immediate SQL语句的主体中使用列别名。他们中的一些人允许分组,并有子句 您可以通过使用子查询绕过它,但这可能会导致性能问题。你最好的办法就是重复这个等式 如果您感兴趣,子查询方法如下所示:
SELECT
col1,
col2,
col3,
Interval
FROM
(
SELECT
col1,
col2,
col3,
CASE
WHEN CAST(segstart AS FLOAT) - FLOOR(CAST(segstart AS FLOAT)) >=
CAST(@TweleveAM AS FLOAT) - FLOOR(CAST(@TweleveAM AS FLOAT))
THEN CAST(0 AS SMALLINT)
END AS interval
FROM
My_Table
) AS SQ
INNER JOIN New_Table NEW ON
NEW.start_time = SQ.Interval
另一种选择是在RDBMS中使用用户定义的函数(如果您使用的是MS SQL Server)或任何等效函数。请记住,这里也可能存在性能问题,所以一定要测试它的性能。它可以让你把方程都放在一个地方