连接问题

时间:2013-08-23 21:08:31

标签: sql oracle

我有一张桌子“患者”,有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列的单个列,但我还需要将前两列组合成一个名为“patient”的子列。

你能在连接中连接吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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.

答案 2 :(得分: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

我认为这里提供了足够的信息,您可以添加或操作(其他)列以显示。