Sql server 当一个表的外键字段中的值相同时,从两个表中获取记录
我有两个表,我只需要从表A中获取记录,其中表B在其字段状态中所有状态记录都是进程Sql server 当一个表的外键字段中的值相同时,从两个表中获取记录,sql-server,Sql Server,我有两个表,我只需要从表A中获取记录,其中表B在其字段状态中所有状态记录都是进程 Table A --------------------------------------------------- Id Folio Date Amount YY1 001 01/01/2014 300 YY2 002 02/01/2014 400 YY3 003
Table A
---------------------------------------------------
Id Folio Date Amount
YY1 001 01/01/2014 300
YY2 002 02/01/2014 400
YY3 003 03/01/2014 500
YY4 004 04/01/2014 600
Table B
---------------------------------------------------
Id Table_A_Id Status
XY1 YY1 Process
XY2 YY1 Process
XY3 YY1 Process
XY4 YY2 Process
XY5 YY2 Rejected
XY6 YY2 Process
XY7 YY3 Process
XY8 YY3 Rejected
XY9 YY3 Finish
XY10 YY4 Process
XY11 YY4 Process
XY12 YY4 Process
我想要这个
Id Folio Date Amount
-------------------------------------------
YY1 001 01/01/2014 300
YY4 004 04/01/2014 600
你真的应该自己尝试一下,但是看看这个
CREATE TABLE #table1(Id VARCHAR(5), Folio VARCHAR(5), Date datetime, Amount numeric(28,12))
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY1', '001', '01/01/2014', 300)
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY2', '002', '02/01/2014', 400)
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY3', '003', '03/01/2014', 500)
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY4', '004', '04/01/2014', 600)
CREATE TABLE #table2(id VARCHAR(5), table_a_id VARCHAR(5), status VARCHAR(20))
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY1', 'YY1', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY2', 'YY1', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY3', 'YY1', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY4', 'YY2', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY5', 'YY2', 'Rejected')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY6', 'YY2', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY7', 'YY3', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY8', 'YY3', 'Rejected')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY9', 'YY3', 'Finish')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY10', 'YY4', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY11', 'YY4', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY12', 'YY4', 'Process')
SELECT *
FROM #table1 t1
WHERE t1.id NOT IN (
SELECT table_a_id
FROM #table2
WHERE status <> 'Process'
)
DROP TABLE #table1
DROP TABLE #table2
你真的应该自己尝试一下,但是看看这个
CREATE TABLE #table1(Id VARCHAR(5), Folio VARCHAR(5), Date datetime, Amount numeric(28,12))
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY1', '001', '01/01/2014', 300)
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY2', '002', '02/01/2014', 400)
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY3', '003', '03/01/2014', 500)
INSERT INTO #table1(id, folio, date, amount)
VALUES('YY4', '004', '04/01/2014', 600)
CREATE TABLE #table2(id VARCHAR(5), table_a_id VARCHAR(5), status VARCHAR(20))
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY1', 'YY1', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY2', 'YY1', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY3', 'YY1', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY4', 'YY2', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY5', 'YY2', 'Rejected')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY6', 'YY2', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY7', 'YY3', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY8', 'YY3', 'Rejected')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY9', 'YY3', 'Finish')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY10', 'YY4', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY11', 'YY4', 'Process')
INSERT INTO #table2(id,table_a_id,status)
VALUES('XY12', 'YY4', 'Process')
SELECT *
FROM #table1 t1
WHERE t1.id NOT IN (
SELECT table_a_id
FROM #table2
WHERE status <> 'Process'
)
DROP TABLE #table1
DROP TABLE #table2
没问题。如果这回答了你的问题,请接受答案。没问题。如果这回答了你的问题,请接受答案。