【发布时间】:2018-09-23 08:24:02
【问题描述】:
我有一个包含 20 多个表的数据库,我试图将这些表加入一个大查询以创建报告。我已经成功地通过 SSMS 查询生成器创建了一个基本报告,但是一个表造成了麻烦,因为有一个字段可以有相同的 uniqueID 的两个值(输入或输出),我的报告中出现重复的行,重复所有其他数据,最后显示包含输入和输出相关字段的信息。
我猜这是一个经典问题,但不知道如何解决它或这叫什么。
考虑下表(A):
+------+--------------+--------------+--------+----------+
| type | information1 | information2 | Notes | uniqueID |
+------+--------------+--------------+--------+----------+
| IN | infoA | anotherinfo1 | NotesA | SN1 |
+------+--------------+--------------+--------+----------+
| OUT | infoB | anotherinto2 | NotesB | SN2 |
+------+--------------+--------------+--------+----------+
我的报告中的结果是,所有其他信息在这两种类型的每一行中都重复出现。
在此处对 SO how to join two SQL queries 进行了一些研究后,我找到了一个解决方案,可以让我从该表中提取信息,以便信息正确分布在列上,而不是行上。
表(B):
Type 1 |Info 1 |unique ID type 1 |unique ID type 2 |Type 2 |Info 2 |
-----------|-------------------|------------------|------------------|-----------|-----------------|
IN |Information 1 |SerialNumber1 |SerialNumber1 |OUT |Information2 |
IN |Information 1 |SerialNumber2 |SerialNumber2 |OUT |Information2 |
用于创建表 B 的相关查询:
SELECT * FROM
(SELECT
t1.Type as "Type 1", t1.information as "Info 1", t1.uniqueID as "unique ID type 1", t2.uniqueID as "unique ID type 2", t2.Type as "Type 2", t2.Information1 as "Info 2"
FROM
(SELECT uniqueID, type, information1, information2, Notes, from TABLE where type = 'IN') as t1,
(SELECT uniqueID, type, information1, information2, Notes, from TABLE where type = 'OUT') as t2
WHERE
t1.uniqueID = t2.uniqueID) as X1;
请不要只包含唯一 ID 列来证明查询有效。
原来的表也大了一点,这里尽量保持简短。
现在的主要问题是:如何将我的查询合并到我的大查询中?
如您所见,我尝试创建 X1 变量,但我可以在其中对 X1.t1.uniqueID 之类的东西进行连接。然而,这不起作用。 X1.t1.uniqueID 在我的编辑器中甚至没有被识别,然后在执行时由于同样的原因而失败。任何想法如何实现我所需要的,最好是通过使用像 SSMS 中的查询构建器?查询太大了,我无法手动构建。
非常感谢!
【问题讨论】:
标签: sql sql-server ssms