这是我的代码。它给了我一个错误。如何在SQL Server 2005中使用子查询作为别名
select
b.bill_no as 'Bill Number',
(select descript from SALE_TERMS where STERMS_CODE='99')=b.[99]
from BILLDET as b
这是我的代码。它给了我一个错误。如何在SQL Server 2005中使用子查询作为别名
select
b.bill_no as 'Bill Number',
(select descript from SALE_TERMS where STERMS_CODE='99')=b.[99]
from BILLDET as b
为什么不干脆:
SELECT
b.bill_no as 'Bill Number',
(SELECT descript FROM SALE_TERMS WHERE STERMS_CODE = '99') AS 'Code99'
FROM
BILLDET as b
SELECT
b.bill_no as 'Bill Number',
ST.[99]
FROM
BILLDET as b
CROSS JOIN
(SELECT descript AS [99] FROM SALE_TERMS WHERE STERMS_CODE = '99') ST
还是你meanthis?
SELECT
b.bill_no as 'Bill Number',
ST.descript
FROM
BILLDET as b
JOIN
SALE_TERMS st ON b.[99] = ST.STERMS_CODE
WHERE
ST.STERMS_CODE = '99'
你的例子几乎是正确的,除了赋值之外,它应该是一个包含列名的'AS'语句。 此外,它在你的子查询中使用TOP 1件好事,万一STERMS_CODE值不是唯一的:
SELECT
b.bill_no AS 'Bill Number',
(SELECT TOP 1 descript from SALE_TERMS WHERE STERMS_CODE='99') AS [99]
FROM BILLDET AS b
我想要做的是使用子查询作为列名称而不是行值。你的答案也是这样。 – 2010-03-19 11:48:17
我明白了。您想根据子查询创建一个动态命名的列。这不会以这种方式工作。你能提供一些样本输入和输出数据吗? – Prutswonder 2010-03-19 13:55:25
这是有史以来没有办法。 SQL语句在编译后假定“适当”,即稳定的环境。你可以用动态SQL来做到这一点。但它需要2个查询 - 一个获取字段名称,然后是一些字符串魔术,然后获取数据。 – TomTom 2010-03-19 14:51:10
什么是它应该这样吗?部分 “9”)= b。[99]“ 对我来说没有任何意义。什么是错误? – TomTom 2010-03-19 11:15:01
错误是,在billdet表中有列名[99],在sale_terms表中有一行[99],我想把[99]的描述值,它应该是列名。 – 2010-03-19 12:07:42