[英]SQL Server query to find rows that have no parent and child in a single table
我有這張桌子:
CREATE TABLE dbo.Invoices
(
[InvoiceCode] varchar(20),
[ParentInvoiceCode] varchar(20),
[InvoiceDate] date
)
INSERT INTO dbo.Invoices
VALUES
( 'INV-001', 'INV-001', N'2015-01-01 00:00:00.000' ),
( 'INV-002', 'INV-001', N'2015-01-01 00:00:00.000' ),
( 'INV-003', 'INV-001', N'2015-01-01 00:00:00.000' ),
( 'INV-004', 'INV-004', N'2015-01-01 00:00:00.000' ),
( 'INV-005', 'INV-005', N'2015-01-01 00:00:00.000' ),
( 'INV-006', 'INV-006', N'2015-01-01 00:00:00.000' ),
( 'INV-007', 'INV-007', N'2015-01-01 00:00:00.000' ),
( 'INV-008', 'INV-007', N'2015-01-01 00:00:00.000' ),
( 'INV-009', 'INV-007', N'2015-01-01 00:00:00.000' ),
( 'INV-010', 'INV-007', N'2015-01-01 00:00:00.000' )
如您所見,值 4、5、6 沒有父行或子行。 我可以使用什么查詢來找到這些?
所以這只是一個簡單not-exists
查詢:
找到code
和parentcode
代碼相同但這些行不存在不同parentcode
代碼的所有行。
另請注意,您不能擁有超過 999 個發票代碼並且仍然可以訂購它們,代碼和父代碼應該是integer
列。 否則,當您要添加INV-1000
時,它將被認為小於INV-999
,因為這些是字符串!
select *
from invoices i
where i.ParentInvoiceCode = i.InvoiceCode
and not exists (
select * from invoices i2
where i2.ParentInvoiceCode = i.InvoiceCode
and i2.InvoiceCode != i2.ParentInvoiceCode
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.