关于sql select as

select (select ps_prm_discount_b.vdbname,ps_so_subsc.ncurrrate from ps_prm_discount_b join ps_so_subsc on ps_prm_discount_b.pk_currtype=ps_so_subsc.pk_currtype) as rate from (ps_prm_discount_b join ps_so_subsc on ps_prm_discount_b.pk_currtype=ps_so_subsc.pk_currtype)
提示:当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。

第1个回答  2011-08-17
按我理解你的意思是要获取两个关联表得到的两个列值把它更新到第三个表的一个列(rate)里边去。如果这样的话,你可以试下以下代码:
;WITH
CTE_1 AS(
select ps_prm_discount_b.vdbname vdbname,ps_so_subsc.ncurrrate ncurrrate
from ps_prm_discount_b
join ps_so_subsc
on ps_prm_discount_b.pk_currtype=ps_so_subsc.pk_currtype
)
UPDATE 第三张表 SET rate=C.vdbname+','+C.ncurrrate
FROM ps_prm_discount_b A,ps_so_subsc B,CTE_1 C
WHERE A.pk_currtype=B.pk_currtype
第2个回答  2011-08-17
语法有误,最好列出数据和要的结果
--看看是不是这样的结果
SELECT
a.vdbname,b.ncurrrate
FROM ps_prm_discount_b AS a
INNER JOIN ps_so_subsc AS b ON a.pk_currtype=b.pk_currtype追问

有俩张表ps_prm_discount_b和ps_so_subsc,我要分别从里面取出vdbname和ncurrrate 俩个字段值放到一个新字段里面
这个新字段所在的表是第三个表,应该和这里没关系吧。

追答

這兩個字段合為一個字符時用+連接
-------
樓主最好列出數據或想要的結果

追问

我想将第二个表字段的数据加到第一个表认购折扣字段中。
类似效果:
认购折扣
公开折扣1% ,1.00000000

追答

字符與數字加減,需要轉為字符
SELECT
a.vdbname+','+Cast(b.ncurrrate as varchar(50)) as 顯示
FROM ps_prm_discount_b AS a
INNER JOIN ps_so_subsc AS b ON a.pk_currtype=b.pk_currtype

本回答被提问者采纳
第3个回答  2011-08-17
select (..) as rate
(...) 中只能取一个列,因为这个(...)的返回结果要作为单独的列rate.追问

我要把2个表中不同的2个字段放到第三个表的一个字段里

追答

直接按照roy_88的sql

第4个回答  2011-08-17
as 前的数据应该是唯一的吧,或者你查询多列数据通过运算得到唯一结果,才可以 as “列名”
第5个回答  2011-08-17
。。这个不懂。
相似回答