gpt4 book ai didi

sql - 外连接/联合?- t/sql 查询

转载 作者:行者123 更新时间:2023-12-04 21:43:30 25 4
gpt4 key购买 nike

我需要有关我正在编写的特殊报告的复杂 t/sql 查询的帮助。
我不太清楚如何阐明这个问题;但我要试一试:

基本上,我有以下三个表:

@PrimaryTable
Key - Is unique and may or may not exist
Description1 - Some field
Description2 - Some field which works as a heading, more on this later

@Subtable1
KeyFK - is NOT unique, links to Key in primary table. May or may not exist. May also exist multiple times per Key
Description - The field I want

@Subtable2
- Just like subtable1, but does not relate to subtable1 in any way

我想将这些表连接到 PrimaryTable,因为它看起来带有 UNION ALL,但没有所有 NULL 值。

有关示例,请参阅此查询:
DECLARE @PrimaryTable AS table ("Key" int, Description1 varchar(32), Description2 varchar(32));        --Contains MAXIMUM one of each Key
DECLARE @Subtable_1 AS table ("KeyPK" int, SubDescription1 varchar(32)); --Can contain zero, one or more lines with same KeyPK
DECLARE @Subtable_2 AS table ("KeyPK" int, SubDescription2 varchar(32)); --Can contain zero, one or more lines with same KeyPK

INSERT INTO @PrimaryTable VALUES (1, 'Description', 'Heading');
INSERT INTO @PrimaryTable VALUES (2, 'Description', 'Heading');
INSERT INTO @PrimaryTable VALUES (3, 'Description', 'Heading');
INSERT INTO @PrimaryTable VALUES (5, 'Description', 'Heading');
INSERT INTO @PrimaryTable VALUES (6, 'Description', 'Heading');
INSERT INTO @PrimaryTable VALUES (7, 'Description', 'Heading');
INSERT INTO @PrimaryTable VALUES (8, 'Description', 'Heading');

INSERT INTO @Subtable_1 VALUES (1, 'Subdescription1_1');

INSERT INTO @Subtable_2 VALUES (2, 'Subdescription2_1');

INSERT INTO @Subtable_1 VALUES (3, 'Subdescription1_1');
INSERT INTO @Subtable_2 VALUES (3, 'Subdescription2_1');

INSERT INTO @Subtable_1 VALUES (4, 'Subdescription1_1');
INSERT INTO @Subtable_2 VALUES (4, 'Subdescription2_1');
INSERT INTO @Subtable_2 VALUES (4, 'Subdescription2_2');

INSERT INTO @Subtable_1 VALUES (5, 'Subdescription1_1');
INSERT INTO @Subtable_1 VALUES (5, 'Subdescription1_2');
INSERT INTO @Subtable_2 VALUES (5, 'Subdescription2_1');

INSERT INTO @Subtable_1 VALUES (6, 'Subdescription1_1');
INSERT INTO @Subtable_2 VALUES (6, 'Subdescription2_1');
INSERT INTO @Subtable_2 VALUES (6, 'Subdescription2_2');

INSERT INTO @Subtable_1 VALUES (7, 'Subdescription1_1');
INSERT INTO @Subtable_1 VALUES (7, 'Subdescription1_2');

我希望结果如下所示:
/*
Key Description1 Description2 Subdescription1 Subdescription2
_________________________________________________________________________
1 Description Heading '' ''
1 Description '' Subdescription1_1 NULL

2 Description Heading '' ''
2 Description '' NULL Subdescription2_1

3 Description Heading '' ''
3 Description '' Subdescription1_1 Subdescription2_1

5 Description Heading '' ''
5 Description '' Subdescription1_1 Subdescription2_1
5 Description '' Subdescription1_2 NULL

6 Description Heading '' ''
6 Description '' Subdescription1_1 Subdescription2_1
6 Description '' NULL Subdescription2_2

7 Description Heading '' ''
7 Description '' Subdescription1_1 NULL
7 Description '' Subdescription1_2 NULL

8 Description Heading '' ''
*/

空描述的标题行没有问题;之后可以使用联合轻松完成,但我不知道如何像这样加入这些表 - 有谁知道如何做到这一点?

编辑:
我应该从一开始就解释报告:
我正在研究一个非常棒的数据库结构,但我有一个非常奇怪的报告要求。

PrimaryTable 是一个实际的表,报告询问它
Subtable1 是解释主表不同部分的表,这是真实信息。
Subtable2 不是表格,而是分解为一行 pr 的契约(Contract)(PrimaryTable 中的一个字段)。线。

然后,报告希望将主表中的所有信息作为标题,包括一些小计。然后有一个折叠选项,它打开到一行 pr。 subtable2 描述/契约(Contract)中的行。 pr Key 的行数简单地显示了每次折叠的长度。

SQL 将尽可能多地完成报告回答时间。 - 这将是一个存储过程,它将生成一个基于解决方案的快速回答表

最佳答案

我想你想要这样的东西:

SELECT key, description1, description2, '', ''
FROM PrimaryTable
UNION
SELECT distinct p.description1, '', s1.subdescription1, s2.subdescription2
FROM PrimaryTable as p
LEFT JOIN Subtable1 as s1
ON p.key = s1.key
LEFT JOIN Subtable2 as s2
ON p.key = s2.key

我还要说,看起来你有一个非常奇怪的数据库结构。你有两个“子描述”表有什么原因吗?

关于sql - 外连接/联合?- t/sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com