gpt4 book ai didi

mysql - 编写查询以获得所需的 SQL 表输出

转载 作者:行者123 更新时间:2023-11-29 07:56:22 25 4
gpt4 key购买 nike

我有一些表,并使用 sql 查询在下表中找到所需的输出。表是:

EmpID   TabId
101 1
102 2
103 3
104 4
105 1

其中表名称为Master

EmpID   Name
101 A1
102 A2
103 A3
104 A4
105 A5

表名称为TableA

EmpID   Name
101 B1
102 B2
103 B3
104 B4
105 B5

表名称为TableB

EmpID   Name
101 C1
102 C2
103 C3
104 C4
105 C5

表名称为TableC

EmpID   Name
101 D1
102 D2
103 D3
104 D4
105 D5

表名称为TableD

TabId   Name
1 TableA
2 TableB
3 TableC
4 TableD

表名称为 AttMaster 已提供给我们,所需的输出如下

TabId   Name
101 A1
102 B2
103 C3
104 D4
105 A5

请帮助我如何通过 sql 查询获得所需的输出。我没有得到任何解决方案来找到输出。

最佳答案

这应该有效。希望对您有帮助

DECLARE @Master TABLE (EmpID INT, TabId INT)
DECLARE @TableA TABLE (EmpID INT, Name VARCHAR(10))
DECLARE @TableB TABLE (EmpID INT, Name VARCHAR(10))
DECLARE @TableC TABLE (EmpID INT, Name VARCHAR(10))
DECLARE @TableD TABLE (EmpID INT, Name VARCHAR(10))
DECLARE @AttMaster TABLE (TabId INT, Name VARCHAR(10))

INSERT INTO @Master VALUES
('101', '1'),
('102', '2'),
('103', '3'),
('104', '4'),
('105', '1')

INSERT INTO @TableA VALUES
('101', 'A1'),
('102', 'A2'),
('103', 'A3'),
('104', 'A4'),
('105', 'A5')

INSERT INTO @TableB VALUES
('101', 'B1'),
('102', 'B2'),
('103', 'B3'),
('104', 'B4'),
('105', 'B5')

INSERT INTO @TableC VALUES
('101', 'C1'),
('102', 'C2'),
('103', 'C3'),
('104', 'C4'),
('105', 'C5')

INSERT INTO @TableD VALUES
('101', 'D1'),
('102', 'D2'),
('103', 'D3'),
('104', 'D4'),
('105', 'D5')

INSERT INTO @AttMaster VALUES
('1', 'TableA'),
('2', 'TableB'),
('3', 'TableC'),
('4', 'TableD')


;WITH cte_MasterAttMaster AS
(
SELECT m.EmpID ,am.TabId, am.Name
FROM @Master m
JOIN @AttMaster am
on m.TabId = am.TabId
)
,cte_TableABCD(EmpID,Name,TName) AS
(
SELECT *,'TableA' FROM @TableA
UNION ALL
SELECT *,'TableB' FROM @TableB
UNION ALL
SELECT *,'TableC' FROM @TableC
UNION ALL
SELECT *,'TableD' FROM @TableD
)
SELECT mam.EmpID,
tb.Name
FROM cte_MasterAttMaster AS mam
JOIN cte_TableABCD AS tb
ON tb.EmpID = mam.EmpID
AND tb.TName = mam.Name
ORDER BY mam.EmpID

关于mysql - 编写查询以获得所需的 SQL 表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033601/

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