sql - 创建视图表
问题描述
我正在尝试使用UNION ALL创建视图表。但我有一个错误。下面是我的SQL代码:
CREATE VIEW dbo.v_DemographicInfo
AS
(
SELECT 'HSA' AS HospitalName, HSA.*,P.*,S.*,E.*,
CASE WHEN DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)<18 THEN 'AGE<18'
WHEN DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)>=18 AND DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)<40 THEN '18<=AGE<40'
WHEN DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)>=40 AND DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)<60 THEN '40<=AGE<60'
ELSE '60<=AGE'
END AS AGE_CATEGORY
FROM [HSA_Careman].[dbo].[ADMISSIONS] HSA
JOIN [HSA_Careman].[dbo].[PATIENTS] P ON HSA.PATIENTDBOID=P.PATIENTDBOID
JOIN [HSA_Careman].[dbo].[SEXES] S ON P.SEXDBOID=S.SEXDBOID
JOIN [HSA_Careman].[dbo].[ETHNICITIES] E ON E.ETHNICITYDBOID=P.ETHNICITYDBOID
UNION ALL
SELECT 'HTAR' AS HospitalName, HTAR.*,P.*,S.*,E.*,
CASE WHEN DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)<18 THEN 'AGE<18'
WHEN DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)>=18 AND DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)<40 THEN '18<=AGE<40'
WHEN DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)>=40 AND DATEDIFF(YEAR, BIRTHDATE, CURRENT_TIMESTAMP)<60 THEN '40<=AGE<60'
ELSE '60<=AGE'
END AS AGE_CATEGORY
FROM [HTAR_Careman].[dbo].[ADMISSIONS] HTAR
JOIN [HTAR_Careman].[dbo].[PATIENTS] P ON HTAR.PATIENTDBOID=P.PATIENTDBOID
JOIN [HTAR_Careman].[dbo].[SEXES] S ON P.SEXDBOID=S.SEXDBOID
JOIN [HTAR_Careman].[dbo].[ETHNICITIES] E ON E.ETHNICITYDBOID=P.ETHNICITYDBOID
)
执行代码后出现的错误:
Column names in each view or function must be unique. Column name 'PATIENTDBOID' in view or function 'v_DemographicInfo' is specified more than once.
解决方案
推荐阅读
- ios - 领域。更新多个 ViewController 中的数据
- centos7 - 使用 Samba 配置 CTDB GlusterFS 的问题
- bash - 如何将命令“which”的输出存储在 bash 脚本的变量中?
- facebook - 有什么方法可以检测到用户点击了我在 Facebook、Messenger 上分享的链接?
- asp.net - WebMarkupMin.AspNet4.WebForms 缩小整个 aspx 文件
- ubuntu - awk 转义单引号
- flutter - 我正在尝试制作一个简单的应用程序来随机改变身体背景的颜色,但我在模拟器上得到的只是一个空白
- javascript - 浏览器通知可判定操作不起作用(javascript、vue.js) - 不再受支持吗?
- python - 从 IGraph (Python) 中的多个文件中读取图形
- html - 4列全角链接部分