Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果列中的值大于1,则使用重复行进行SQL联接_Sql_Sql Server_Sql Server 2008_Join - Fatal编程技术网

如果列中的值大于1,则使用重复行进行SQL联接

如果列中的值大于1,则使用重复行进行SQL联接,sql,sql-server,sql-server-2008,join,Sql,Sql Server,Sql Server 2008,Join,我有两张桌子。第一个包含文档和详细信息,第二个占据此文档的位置。我想加入这个表,这样如果表2中的数量大于1,我就可以得到结果中的行数。下面的例子 例如。 1表: 身份证|身份证|身份证|身份证|年份|日期|国家 123 | WZ-20 | 2015 | 20150129 | PL 124 | WZ-22 | 2015 | 20150128 | DE 表2: ID|PAL|TYPE|p|QUA|SUMWEIGHT|ID|DOC 111欧元1欧元200欧元123 112欧元3欧元900欧元124欧元

我有两张桌子。第一个包含文档和详细信息,第二个占据此文档的位置。我想加入这个表,这样如果表2中的数量大于1,我就可以得到结果中的行数。下面的例子

例如。 1表:

身份证|身份证|身份证|身份证|年份|日期|国家 123 | WZ-20 | 2015 | 20150129 | PL 124 | WZ-22 | 2015 | 20150128 | DE

表2:

ID|PAL|TYPE|p|QUA|SUMWEIGHT|ID|DOC 111欧元1欧元200欧元123 112欧元3欧元900欧元124欧元

结果:

ID|u DOC|NR|u DOC|年|日期|国家|类型| p | QUA | SUMW 123 | | WZ-20 | | 2015 | | | 20150129 | | PL | | |欧元| 1 | | 200 124 | WZ-22 | 2015 | 20150129 | PL | 124 | 1 | 300 | WZ-22 | 2015 | 20150129 | PL | 1 | 300 | WZ-22 | 2015 | 20150129 | PL | 1 | 300 |


有可能吗?谢谢你的建议

我假设您希望结果中的行数与数量列中的值相同,在这种情况下,您可以使用数字表来实现这一点,该表包含一个填充了大量数字的int列。然后你可以做这样的连接

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 
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;

到目前为止你尝试了什么?你试过加入吗?你尝试过内部选择吗?请用你正在使用的数据库标记你的问题。我认为这是不可能的。我也是,但我想在搜索其他方法之前询问一下;