【发布时间】:2018-05-18 18:06:10
【问题描述】:
我正在成功地使用 DATEDIFF 逻辑来计算年龄。然后我需要能够获取 Age 并将其用作 CASE 逻辑中的列。当我尝试这样做时,SMSS 会在红色下划线 Age 并指示它是无效列。我该如何解决这个问题?
USE DataWarehouse
SELECT DISTINCT
M.[Account Name Birth Date] as 'Birth Date',
M.[Mailing Address State] as 'State',
E.[ANSVIES2] as 'Income',
E.[FICO] as 'FICO Score',
DATEDIFF(DD,M.[Account Name Birth Date],GETDATE())/365 as [Age],
CASE WHEN [Age] >= 18 AND [Age] <= 34 AND E.[ANSVIES2] >= 50 THEN 'Credit
Driven'
WHEN [Age] < 45 AND E.[ANSVIES2] < 50 THEN 'Fee Driven'
WHEN [Age] >= 35 AND [Age] <= 54 AND E.[ANSVIES2] >= 50 AND E.[ANSVIES2] <=
125 THEN 'Middle Market'
WHEN [Age] >= 45 AND E.[ANSVIES2] < 50 THEN 'Low Income Depositor'
WHEN [Age] >= 55 AND E.[ANSVIES2] >= 50 AND E.[ANSVIES2] <= 125 THEN 'Middle
Income Depositor'
WHEN [Age] >= 35 AND E.[ANSVIES2] >= 125 THEN 'Upscale'
ELSE 'Unclassified' END as 'Consumer Segment'
【问题讨论】:
-
将其转储到临时表中,然后从那里与您的案例块一起选择
-
我从未使用过临时表。我会研究一下。感谢您的回复。
-
它非常简单。你只需要做
select whatever fields into #temp from table然后select case when... from #temp
标签: sql sql-server tsql case datediff