2013-08-23 49 views
0

我有一个表格“患者”,它有5个字段。串联问题

CREATE TABLE PATIENT 
(PAT_ID   CHAR (4) PRIMARY KEY, 
PAT_NAME  VARCHAR (7), 
ADMITTED  DATE, 
ROOM   CHAR (3), 
DOCTOR   VARCHAR (7)); 

INSERT INTO PATIENT VALUES 
(1001, 'FRED', '30-MAR-07', 101, 'PAYNE'); 

我想创建一个视图在我的输出看起来像这样:

Patient  Doctor  Room   Admitted  
"-----------------------------------------------" 
1001 Fred Payne  101  March 31, 2007 

的问题是,我想连接Pat_name和Pat_ID到自己独立的“病人”列,但也有其他三个字段也与它连接(注意,'破折号'中没有分隔)。

基本上,我想所有级联5列一个单个列,但我需要也有前两列合并成一个名为“病人”一个子栏目。

你能串联内串联?

+0

我尝试这样做: CREATE OR REPLACE VIEW PATIENT_REPORT AS SELECT \t(SELECT PATIENT.PAT_ID ||” '|| PATIENT.PAT_NAME从病人 “病人”)||' “||医生||' “|| ROOM ||' “||被采纳 来自患者; 但我得到一个“必须指定一个列别名这个表达式”错误 –

+0

我不知道究竟要连接的字段,但MySQL的'CONCAT'功能可以采取任何数量的字符串:'SELECT CONCAT('一','b','cc');'或'SELECT CONCAT_WS('','a','b','cc');' – rutter

+0

想想这样吧。我有5个字段:1,2,3,4和5.我需要结合字段1和2并标记为“患者”。然后,我需要THAT列结合字段3,4和5,它们保留自己的字段名称。看看我列为输出的内容。我基本上采取5列,并结合他们两次与4个标签产生一列但5个数据 –

回答

1
SELECT CONCAT(PAT_ID, ' ', PAT_NAME) AS Patient, 
    DOCTOR AS Doctor, ROOM AS Room, ADMITTED AS Admitted 
FROM PATIENT 
+0

的这给了我为CONCAT部分 –

+0

@JoshuaPlyler你确定这是MySQL的“无效的参数数目”错误? –

+0

我不是100%确定。我对此仍然很陌生。该程序被称为SQL * PLUS。我不知道有什么区别 –

0

It turns out you're actually using Oracle Database。我仍然不知道到底哪些领域你试图拼接以何种方式,不过这应该是足以让你滚:

CREATE VIEW PATIENT_REPORT 
AS 
SELECT 
    PATIENT.PAT_ID||' '||PATIENT.PAT_NAME as "patient", 
    PATIENT.DOCTOR||' '||PATIENT.ROOM||' '||PATIENT.ADMITTED as "details" 
FROM PATIENT; 

Here's a live demo on SQL Fiddle.

+0

这很接近,但这仍然会创建两个单独的列,“耐心”和“详细信息”。我需要的是具有4个独立标签和5位数据的单列。哈哈,我知道它很混乱。 –

+0

为什么你只需要一列?如果另一个应用程序正在使用此数据,请返回单独的列并让其担心。如果这些数据正在被人阅读,谁在乎我们有多少列? – rutter

+0

学校项目,只是说明 –

0

这里是按名称创建视图的查询“VIEW_NAME”:

create or replace view view_name as 
select t.Pat_Id || ' ' || t.Pat_Name Patient, 
     t.Doctor, 
     t.Room, 
     to_char(t.Admitted, 'Month dd, yyyy') Admitted 
    from Patient t 
with read only; 

SELECT * FROM VIEW_NAME 

我想...你可以选择ere提供了足够的信息,您可以添加或操纵(其他)列以显示。