0

我有一个如下查询:

select <few column names>, 
       0.0 as 'first alias column name', 
       0.0 as 'second alias column name' 
into ##tempTable 
from (one query UNION second query) 
where <some conditions>

现在稍后我必须更新这##tempTables2 个 ALIAS 列。

任何想法,如何做到这一点?

4

2 回答 2

1

我希望你的名字中没有带空格的别名!但基本上,您将使用一条UPDATE语句来更新该临时表 - 就像任何其他表一样:

UPDATE #tempTable
SET AliasColumn1 = somevalue,
    AliasColumn2 = someOthervalue
WHERE (some condition)

更新:问题是这样的:使用SELECT ... INTO ##tempTable和提供0.0作为值的方法,您的临时表将获得两列类型NUMERIC,精度 = 1,比例 = 1 - 总计 1 位,其中小数点后有 1 位。基本上这是一个不可用的数值,因为您无法提供任何适合的值.....

所以基本上,你应该在使用它之前专门创建你的临时表:

CREATE TABLE ##tempTable 
       (list of columns, 
        AliasColumn1 DECIMAL(12,2), 
        AliasColumn2 DECIMAL(12,2)
       )

现在您可以将值插入该表

INSERT INTO ##tempTable(columns......)
   SELECT  ........

然后您也可以轻松地更新该表,因为您现在有可用的数字列

于 2013-08-12T11:24:16.903 回答
0

我不得不在这里和那里做一些查询。

情况1:-

Select <few column names>, 
           0.0 as 'firstAliasColumnName', 
           0.0 as 'secondAliasColumnName' 
    into ##tempTable from (one query UNION second query) where <some conditions>

这样做之后,如果我们运行

select 'firstAliasColumnName' from ##tempTable.

我正进入(状态...

--------------------

<ListOfValues>

为了更新,我不得不写

update ##tempTable set firstAliasColumnName=.4 where <some condition>

它会正确更新我的表格。

案例2:-

   Select <few column names>, 
                   1.00 as 'firstAliasColumnName', 
                   1.00 as 'secondAliasColumnName' 
            into ##tempTable from (one query UNION second query) 
             where <some conditions>

以下更新将起作用。

update ##tempTable set firstAliasColumnName=1.42 where <some condition>

等等...

但是是的,ALIAS 列名之间不应该有任何空格

谢谢

于 2013-08-12T12:33:16.697 回答