SQL 如果列中的值大于 1,则加入重复行

SQL Join with duplicate row if value in column is more than 1

我有两个 table。第一个包含文档和详细信息,第二个包含此文档的位置。我想加入这个 table,这样如果 table2 中的数量大于 1,我就会在结果中得到该行数。示例如下。

例子。 1 Table:

ID_DOC || NR_DOC ||年份 ||日期 ||国家
123 || WZ-20 || 2015 ||20150129|| PL
124 || WZ-22 || 2015 ||20150128||德国

2 Table:

ID_PAL || TYPE_P ||质量 ||总和 || ID_DOC
111 ||欧元 || 1 ||200 || 123
112 ||欧元 || 3 ||900 || 124

结果:

ID_DOC || NR_DOC||年份 ||日期 ||国家 || 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

有可能吗?谢谢你的建议。

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 

我假设您希望结果中的行数与 Qty 列中的值相同,在这种情况下,您可以使用数字 table - a table其中包含填充有大量数字的单个 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

创建数字的快速方法table:

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;