0
2個數據表,其數據如下所示。SQL - 爲特定列或表選擇第一個匹配的行列值和任何後續行值爲空
Order表:
| OrderId | TotalAmount | TotalTax |
|---------|-------------|----------|
| 1 | 10 | 0.1 |
| 2 | 40 | 0.4 |
| 3 | 20 | 0.2 |
項目表:(FK的OrderId)
| OrderId | ItemId | ItemDesc |
|---------|--------|----------|
| 1 | 1 | Item1 |
| 1 | 2 | Item2 |
| 2 | 1 | Item1 |
| 2 | 3 | Item3 |
| 2 | 5 | Item5 |
| 3 | 7 | Item7 |
| 3 | 5 | Item5 |
預計輸出-Records加入兩個表應該有值,在第一行和隨後匹配的行匹配的記錄後應對於來自訂單表的列有空。如下圖所示
| OrderId | TotalAmount | TotalTax |ItemId | ItemDesc |
|---------|-------------|----------|-------|----------|
| 1 | 10 | 0.1 | 1 | Item1 |
| 1 | NULL | NULL | 2 | Item2 |
| 2 | 40 | 0.4 | 1 | Item1 |
| 2 | NULL | NULL | 3 | Item3 |
| 2 | NULL | Null | 5 | Item5 |
| 3 | 20 | 0.2 | 7 | Item7 |
| 3 | NULL | NULL | 5 | Item5 |
查詢:
DECLARE @order table(orderId int, TotalAmount int, totaltax decimal)
Insert into @order(orderId, TotalAmount,totaltax)
values
(1,10,0.1),
(2,40,0.4),
(3,20, 0.2)
DECLARE @ITEMS table(OrderId int, ItemId int, ItemDesc nvarchar(50))
Insert into @ITEMS(OrderId, ItemId,ItemDesc)
values
(1,1,'Test1'),
(1,2,'Test2'),
(2,1,'Test1'),
(2,3,'Test3'),
(2,5,'Test5'),
(3,7,'Test7'),
(3,5,'Test5')
select o.*,i.* from @order o
inner join @ITEMS I
on o.orderId = i.orderId
旁白:這看起來像顯示格式化數據,東西一般都比較好處理在應用程序中而不是在t中他數據庫。 – HABO
我明白這一點。但這是一個需要這種數據的特定實例。 – Rex