select * from 订货总表 t where exists (select * from 订货明细表 where 订货编号=t.订货编号 group by 订货编号 having count(distinct 是否到货)>1 )
select A.* from 订货总表 A LEFT JOIN (SELECT 订货编号 FROM 订货明细表 WHERE 订货编号 IN('是','否') GROUP BY 订货编号 HAVING COUNT(DISTINCT 是否到货)>1)AS B ON A.订货编号=B.订货编号
select * from 订货总表 where 订货编号=(select 订货编号,是否到货 from 订货明细表 where 是否到货=1 ) 我把是否到货的值说一下,如果楼主这个字段是布尔值的话 就应该是0(false) 1(true) 在SQL2000中 以0和1存储 在SQL2005中 以true和false存储。
CREATE TABLE 订货总表(订货编号 VARCHAR(10),订货时间 DATETIME,订货总金额 MONEY) INSERT 订货总表 SELECT '0001','2009-07-01',200 UNION SELECT '0002','2009-07-02',300 UNION SELECT '0003','2009-07-03',500 CREATE TABLE 订货明细表2(订货编号 VARCHAR(10),商品 VARCHAR(10),是否到货 VARCHAR(10)) INSERT 订货明细表2 SELECT '0001','A商品','否'UNION SELECT '0001','d商品','否' UNION SELECT '0002','A商品','是' UNION SELECT '0002','b商品','是' UNION SELECT '0002','商品','是' UNION SELECT '0003','c商品','是' UNION SELECT '0003','e商品','否' ---DROP TABLE 订货总表select A.* from 订货总表 A INNER JOIN (SELECT 订货编号 FROM 订货明细表2 WHERE 是否到货 IN('是','否') GROUP BY 订货编号 HAVING COUNT(DISTINCT 是否到货)>1)AS B ON A.订货编号=B.订货编号 订货编号 订货时间 订货总金额 ---------- ------------------------------------------------------ --------------------- 0003 2009-07-03 00:00:00.000 500.0000(所影响的行数为 1 行)
-- ========================================= -- -----------t_mac 小编------------- ---希望有天成为大虾---- -- =========================================IF OBJECT_ID('订货总表') IS NOT NULL DROP TABLE 订货总表 GO CREATE TABLE 订货总表(订货编号 varchar(10),订货时间 datetime,订货金额 int ) go insert 订货总表 SELECT '0001','2009-07-01',200 UNION ALL SELECT '0002','2009-07-02',300 UNION ALL SELECT '0003','2009-07-03',500 go IF OBJECT_ID('订货明细表') IS NOT NULL DROP TABLE 订货明细表 GO CREATE TABLE 订货明细表(订货编号 varchar(10),商品编号 varchar(10),是否到货 char(2) ) go insert 订货明细表 SELECT '0001','A商品','否' UNION ALL SELECT '0001','d商品','否' UNION ALL SELECT '0002','A商品','是' UNION ALL SELECT '0002','b商品','是' UNION ALL SELECT '0002','c商品','是' UNION ALL SELECT '0003','c商品','是' UNION ALL SELECT '0003','e商品','否' select * from 订货总表 t where exists (select * from 订货明细表 where 订货编号=t.订货编号 group by 订货编号 having count(distinct 是否到货)>1 ) /*------------ 订货编号 订货时间 订货金额 ---------- ----------------------- ----------- 0003 2009-07-03 00:00:00.000 500(1 行受影响) -------*/
select * from 订货总表 where exist (select * from 订货明细表 where 订货总表.订货编号=订货明细表.订货编号 and 订货明细表.是否到货='否')
是否到货='部分到货'
)
from 订货总表 A LEFT JOIN 订货明细表 B ON A.订货编号=B.订货编号
AND B.是否到货='是'
0001,2009-07-01,.....,200
0002,2009-07-02,.....,300
0003,2009-07-03,.....,500
订货明细表(订货编号,....是否到货)
0001,....A商品,否
0001,....d商品,否
0002,....A商品,是
0002,....b商品,是
0002,....c商品,是
0003,....c商品,是
0003,....e商品,否
查询的结果应为:
0003,2009-07-03,.....,500
有两个表
订货总表(订货编号,订货时间,.....订货总金额)
订货明细表(订货编号,....是否到货)
我想查询出订货明细表中所有部分到货的订货总表的所有字段,谢谢。
例如:
订货总表(订货编号,订货时间,.....订货总金额)
0001,2009-07-01,.....,200
0002,2009-07-02,.....,300
0003,2009-07-03,.....,500
订货明细表(订货编号,....是否到货)
0001,....A商品,否
0001,....d商品,否
0002,....A商品,是
0002,....b商品,是
0002,....c商品,是
0003,....c商品,是
0003,....e商品,否
查询的结果应为:
0003,2009-07-03,.....,500
where exists (select * from 订货明细表 where 订货编号=t.订货编号 group by 订货编号
having count(distinct 是否到货)>1
)
from 订货总表 A
LEFT JOIN
(SELECT 订货编号 FROM 订货明细表 WHERE 订货编号 IN('是','否') GROUP BY 订货编号 HAVING COUNT(DISTINCT 是否到货)>1)AS B
ON A.订货编号=B.订货编号
INSERT 订货总表
SELECT '0001','2009-07-01',200 UNION
SELECT '0002','2009-07-02',300 UNION
SELECT '0003','2009-07-03',500
CREATE TABLE 订货明细表2(订货编号 VARCHAR(10),商品 VARCHAR(10),是否到货 VARCHAR(10))
INSERT 订货明细表2
SELECT '0001','A商品','否'UNION
SELECT '0001','d商品','否' UNION
SELECT '0002','A商品','是' UNION
SELECT '0002','b商品','是' UNION
SELECT '0002','商品','是' UNION
SELECT '0003','c商品','是' UNION
SELECT '0003','e商品','否' ---DROP TABLE 订货总表select A.*
from 订货总表 A
INNER JOIN
(SELECT 订货编号 FROM 订货明细表2 WHERE 是否到货 IN('是','否') GROUP BY 订货编号 HAVING COUNT(DISTINCT 是否到货)>1)AS B
ON A.订货编号=B.订货编号
订货编号 订货时间 订货总金额
---------- ------------------------------------------------------ ---------------------
0003 2009-07-03 00:00:00.000 500.0000(所影响的行数为 1 行)
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================IF OBJECT_ID('订货总表') IS NOT NULL
DROP TABLE 订货总表
GO
CREATE TABLE 订货总表(订货编号 varchar(10),订货时间 datetime,订货金额 int )
go
insert 订货总表 SELECT
'0001','2009-07-01',200 UNION ALL SELECT
'0002','2009-07-02',300 UNION ALL SELECT
'0003','2009-07-03',500
go
IF OBJECT_ID('订货明细表') IS NOT NULL
DROP TABLE 订货明细表
GO
CREATE TABLE 订货明细表(订货编号 varchar(10),商品编号 varchar(10),是否到货 char(2) )
go
insert 订货明细表 SELECT
'0001','A商品','否' UNION ALL SELECT
'0001','d商品','否' UNION ALL SELECT
'0002','A商品','是' UNION ALL SELECT
'0002','b商品','是' UNION ALL SELECT
'0002','c商品','是' UNION ALL SELECT
'0003','c商品','是' UNION ALL SELECT
'0003','e商品','否' select * from 订货总表 t
where exists (select * from 订货明细表 where 订货编号=t.订货编号 group by 订货编号
having count(distinct 是否到货)>1
)
/*------------
订货编号 订货时间 订货金额
---------- ----------------------- -----------
0003 2009-07-03 00:00:00.000 500(1 行受影响)
-------*/
你的SQL code是如何贴到帖子里的?为什么我从MSSQL中copy到帖子里,就变成普通的字符了?