Sql server 我试图在计算列中使用CASE语句有什么问题?
我正在尝试创建一个计算列,该列将根据Sql server 我试图在计算列中使用CASE语句有什么问题?,sql-server,case,Sql Server,Case,我正在尝试创建一个计算列,该列将根据状态查找区域 以下是我所拥有的: CREATE FUNCTION fnDonorRegion (@Region VARCHAR(10)) RETURNS VARCHAR AS BEGIN RETURN CASE WHEN DONOR.[State] IN ('Connecticut', 'Maine', 'Massachusetts', 'New Hampshire', 'Rhode Island', 'Vermo
状态
查找区域
以下是我所拥有的:
CREATE FUNCTION fnDonorRegion (@Region VARCHAR(10))
RETURNS VARCHAR
AS
BEGIN
RETURN
CASE
WHEN DONOR.[State] IN ('Connecticut', 'Maine', 'Massachusetts', 'New Hampshire', 'Rhode Island', 'Vermont', 'New Jersey', 'New York', 'Pennsylvania')
THEN 'Northeast'
WHEN DONOR.[State] IN ('Illinois', 'Indiana', 'Michigan', 'Ohio', 'Wisconsin', 'Iowa', 'Kansas', 'Minnesota', 'Missouri', 'Nebraska', 'North Dakota', 'South Dakota')
THEN 'Midwest'
WHEN DONOR.[State] IN ('Delaware', 'Florida', 'Georgia', 'Maryland', 'North Carolina', 'South Carolina', 'Virginia', 'District of Columbia', 'West Virginia', 'Alabama', 'Kentucky', 'Mississippi', 'Tennessee', 'Arkansas', 'Louisiana', 'Oklahoma', 'Texas')
THEN 'South'
ELSE 'West'
END
END
ALTER TABLE tblDONOR
ADD Region AS fnDonorRegion
我不断得到错误:
Msg 4104,16级,状态1,程序fnDonorRegion,第12行无法绑定多部分标识符“D.State”
非常感谢您的帮助 您应该检查参数,而不是表格。假设参数是状态
CREATE FUNCTION fnDonorRegion (@state varchar(10))
RETURNS varchar
AS
BEGIN
RETURN
CASE
WHEN @state IN ('Connecticut', 'Maine', 'Massachusetts', 'New Hampshire', 'Rhode
Island', 'Vermont', 'New Jersey', 'New York', 'Pennsylvania') THEN 'Northeast'
WHEN @state IN ('Illinois', 'Indiana', 'Michigan', 'Ohio', 'Wisconsin',
'Iowa', 'Kansas', 'Minnesota', 'Missouri', 'Nebraska', 'North Dakota', 'South Dakota') THEN 'Midwest'
WHEN @state IN ('Delaware', 'Florida', 'Georgia', 'Maryland', 'North Carolina',
'South Carolina', 'Virginia', 'District of Columbia', 'West Virginia', 'Alabama', 'Kentucky',
'Mississippi', 'Tennessee', 'Arkansas', 'Louisiana', 'Oklahoma', 'Texas') THEN 'South'
ELSE 'West'
END
END
ALTER TABLE tblDONOR
ADD Region AS fnDonorRegion([state]) -- assume your table has a column named state
试试这个:
CREATE FUNCTION dbo.fnDonorRegion
(@Region VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @Result VARCHAR(100)
SELECT
@Result= CASE
WHEN DONOR.[State] IN (@Region)
THEN 'Northeast'
WHEN DONOR.[State] IN(@Region)
THEN 'Midwest'
ELSE 'West'
END
FROM tblDONOR AS DONOR
RETURN @Result
END;
SELECT dbo.fnDonorRegion('Connecticut')
您应该在
CASE
语句中使用输入变量
Create FUNCTION fnDonorRegion (@Region varchar(50))
RETURNS varchar(10)
AS
BEGIN
RETURN
CASE
WHEN @Region IN ('Connecticut', 'Maine', 'Massachusetts', 'New Hampshire', 'Rhode
Island', 'Vermont', 'New Jersey', 'New York', 'Pennsylvania') THEN 'Northeast'
WHEN @Region IN ('Illinois', 'Indiana', 'Michigan', 'Ohio', 'Wisconsin',
'Iowa', 'Kansas', 'Minnesota', 'Missouri', 'Nebraska', 'North Dakota', 'South Dakota') THEN 'Midwest'
WHEN @Region IN ('Delaware', 'Florida', 'Georgia', 'Maryland', 'North Carolina',
'South Carolina', 'Virginia', 'District of Columbia', 'West Virginia', 'Alabama', 'Kentucky',
'Mississippi', 'Tennessee', 'Arkansas', 'Louisiana', 'Oklahoma', 'Texas') THEN 'South'
ELSE 'West'
ENd
ENd
select dbo.fnDonorRegion('Mississippi')
您的
from
子句在哪里?应该在哪里@SankarRajYou正在尝试上面哪个数据库,捐赠者是一个表吗?@deepakl这是我和我的团队创建的一个数据库,捐赠者是一个表,州是一个列。我想你要做的是给一个@region(州名)作为输入,得到的输出是东北
或中西部
或西部
或南部
。我说得对吗?