這是我的代碼。它給了我一個錯誤。如何在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