SQL查詢 主從表 報表方式顯示

2021-09-09 00:10:48 字數 2394 閱讀 1916

--測試表與測試資料

create table test_main (

id int,

value varchar(10),

primary key(id)

);-- 建立測試子表.

create table test_sub (

id int,

main_id int,

value varchar(10),

primary key(id)

);-- 插入測試主表資料.

insert into test_main(id, value) values (1, 'one');

insert into test_main(id, value) values (2, 'two');

-- 插入測試子表資料.

insert into test_sub(id, main_id, value) values (1, 1, 'a');

insert into test_sub(id, main_id, value) values (2, 1, 'b');

insert into test_sub(id, main_id, value) values (3, 1, 'c');

insert into test_sub(id, main_id, value) values (4, 2, 'd');

insert into test_sub(id, main_id, value) values (5, 2, 'e');

insert into test_sub(id, main_id, value) values (6, 2, 'f');

要求:主從表關聯的時候,主表僅僅第一條記錄顯示,後面相同的情況下,不顯示

預設情況下

---------- ----------

one        a

one        b

one        c

two        d

two        e

two        f

希望查詢結果能變為

---------- ----------

one        a b

ctwo      d e

f思路:

首先, 根據主表的資料 分組顯示 row_number

然後,僅僅顯示 row_number = 1 的主表資料, 其他的主表資料不顯示 實現

第一步 根據主表的資料 分組顯示 row_number

select

test_main.value,

test_sub.value,

row_number() over (partition by test_main.value order by test_sub.value)

from

test_main,

test_sub

where

test_main.id = test_sub.main_id

value      value

---------- ---------- --------------------

one        a                             1

one        b                             2

one        c                             3

two        d                             1

two        e                             2

two        f                             3

第二步 僅僅顯示 row_number = 1 的主表資料, 其他的主表資料不顯示

select

case when

row_number() over (partition by test_main.value order by test_sub.value) = 1 then test_main.value

else ''

end as main_value,

test_sub.value

from

test_main,

test_sub

where

test_main.id = test_sub.main_id

執行結果

main_value value

---------- ----------

one        a b

ctwo        d e

f

帆軟報表查詢結果為空時不顯示報表內容

描述 在製作一些報表的時候,為了美觀,整潔,通常需要將查詢結果為空的行不顯示在報表中,這也是最近開發過程中碰到的乙個需求,那麼這種效果怎麼實現呢?處理思路 報表區域是否顯示,其實最簡單的方式就是設定行高,當行高為0的時候,自然也就實現了隱藏效果。具體方法 方法1 條件屬性 非空字段為空,則該行的行高...

SQL查詢的幾種方式

1 左連線 left join 或者 left outer join 2 左連線 table a表資料全部顯示,table b根據條件匹配table a 匹配上顯示,否則顯示null 3 select from table a 4 select from table b 5 select from ...

SQL查詢的幾種方式

1 左連線 left join 或者 left outer join 2 左連線 table a表資料全部顯示,table b根據條件匹配table a 匹配上顯示,否則顯示null 3 select from table a 4 select from table b 5 select from ...