billno RegDate Goodsname 设备总款 条码总款
0001 2009-01-01 A型条码 0 20
0002 2009-01-01 B型条码 0 30
0002 2009-01-01 采集器1 20 0
0003 2009-10-04 采集器2 30 0A型条码 B型条码 都属于条码类,采集器1 采集器2 属于设备类 需要通过一查询,形成以下结果 billno RegDate 条码类 条码总款 设备类 RegDate 设备总款
0001 2009-01-01 A型条码 20 0002 2009-01-01 20
0002 2009-01-01 B型条码 30 0003 2009-10-04 30
0001 2009-01-01 A型条码 0 20
0002 2009-01-01 B型条码 0 30
0002 2009-01-01 采集器1 20 0
0003 2009-10-04 采集器2 30 0A型条码 B型条码 都属于条码类,采集器1 采集器2 属于设备类 需要通过一查询,形成以下结果 billno RegDate 条码类 条码总款 设备类 RegDate 设备总款
0001 2009-01-01 A型条码 20 0002 2009-01-01 20
0002 2009-01-01 B型条码 30 0003 2009-10-04 30
0001 2009-01-01 A型条码 0 20
0002 2009-01-01 B型条码 0 30
0002 2009-01-01 采集器1 20 0
0003 2009-10-04 采集器2 30 0A型条码 B型条码 都属于条码类,采集器1 采集器2 属于设备类 需要通过一查询,形成以下结果 billno RegDate 条码类 条码总款 billno 设备类 RegDate 设备总款
0001 2009-01-01 A型条码 20 0002 采集器1 2009-01-01 20
0002 2009-01-01 B型条码 30 0003 采集器2 2009-10-04 30
(select row_number() over(order by getdate()) no,billno,RegDate,Goodsname,设备总款
from tb where 设备总款>0) a,
(select row_number() over(order by getdate()) no,billno,RegDate,Goodsname,条码总款
from tb where 条码总款>0) b
where a.no=b.no
*
from
(select id=row_number() over(order by getdate()),billno,RegDate,Goodsname,设备总款
from tb ) a,
(select id=row_number() over(order by getdate()),billno,RegDate,Goodsname,条码总款
from tb ) b
where
a.id=b.id
and
a.设备总款>0
and
b.条码总款>0
首先你查询得到条码类信息如下:
0001 2009-01-01 A型条码 20
0002 2009-01-01 B型条码 30
其次你查询得到设备类信息如下:
0003 2009-10-04 采集器2 30
0002 2009-01-01 采集器1 20
最后连接两个表,检索结果集。
SQL语句如下例:
SELECT * FROM
(
(SELECT billno,RegDate,Goodsname AS '条码类',条码总款 FROM test2 WHERE 条码总款>0) AS A
LEFT JOIN (SELECT billno,RegDate,Goodsname AS '设备类',设备总款 FROM test2 WHERE 设备总款>0) AS B
ON A.条码总款 = B.设备总款
)
ORDER BY A.billno
以上,愿可以解决你的问题,有用记得顶一下哦,加个分!