我有两张桌子。首先包含文档和详细信息,第二个包含此文档的位置。我想加入这个表,以便如果在table2中数量大于1,我会在结果中获得该行数。示例如下。
实施例。 1表:
ID_DOC || NR_DOC ||年||日期||国家
123 || WZ-20 || 2015年|| 20150129 || PL
124 || WZ-22 || 2015年|| 20150128 || DE
2表:
ID_PAL || TYPE_P || QUA || SUMWEIGHT || ID_DOC
111 || EURO || 1 || || 200 123个
112 || EURO || 3 || || 900 124
结果:
ID_DOC || NR_DOC ||年|| DATE ||国家|| TYPE_P || QUA || SUMW
123 || WZ-20 || 2015年|| 20150129 || PL ||欧元|| 1个|| 200
124 || WZ-22 || 2015年|| 20150129 || PL ||欧元|| 1 || 300
124 || WZ-22 || 2015年|| 20150129 || PL ||欧元|| 1 || 300
124 || WZ-22 || 2015年|| 20150129 || PL ||欧元|| 1个|| 300
有可能吗?谢谢你的建议。
答案 0 :(得分:0)
select tbl1.id_doc, tbl1.nr_doc, tbl1.year, tbl1.date, tbl1.country, tbl2.type_p, tbl2.qua.tbl2.sumweight
from doc table1, location table2
where table1.id_doc = table2.id_doc
and (select count(*) from location where id_doc = table2.id_doc ) > 1
答案 1 :(得分:0)
我假设您希望结果中的行数与Qty列中的值相同,在这种情况下,您可以使用数字表执行此操作 - 包含填充了单个int列的表很多数字。然后你可以像这样进行连接
SELECT * FROM [dbo].[Table2] PP
INNER JOIN [dbo].[Table1] DD on PP.docid = DD.docid
INNER JOIN Numbers NN on PP.qty >= NN.n
创建数字表的快捷方法:
CREATE TABLE dbo.Numbers
(
n INT PRIMARY KEY
);
INSERT dbo.Numbers(n)
SELECT TOP (10000) rn = ROW_NUMBER() OVER
(ORDER BY s1.[object_id])
FROM sys.all_objects AS s1
CROSS JOIN sys.objects AS s2;