日期:2014-05-18  浏览次数:20349 次

SQL 查詢問題
如下,   有三個Item相同,   但ld_qty_oh數量我們只想顯示一次(顯示在promise   date最前的Item上),   剩下的兩個可為空,  
item             ld_qty_oh
item0                 10
item0                 10
item0                 10
item0                 10
item1                 20
item1                 20
item1                 20
我想顯示成這樣怎么顯示
item             ld_qty_oh
item0                 10
item0                
item0                
item0                
item1                 20
item1                
item1                

想顯示成這樣怎么顯示

------解决方案--------------------
如果是通过程序来约束显示,完全可以在客户端处理。
------解决方案--------------------

沒有主鍵,借用臨時表吧

Select ID = Identity(Int, 1, 1), * Into #T From 表

Select
Distinct
A.item,
(Case When A.ID != B.ID Then Null Else ld_qty_oh End) As ld_qty_oh
From
#T A
Inner Join
(Select item, Min(ID) As ID From #T Group By item) B
On A.item = B.item

Drop Table #T
------解决方案--------------------
這個東西,用SQL實現不是很好,最好在前台去控制。
------解决方案--------------------
如果记录重复出现就替换为空,如果没有就显示
比如
序号 货物 数量
1 A 30
2 10
3 -5
4 B 20
5 100
6 C 1
7 98


declare @t table(序号 int,货物 varchar(100),数量 int)
insert into @t
select 1, 'A ' , 30 union
select 2 , 'a ' , 10 union
select 3 , 'a ' , -5 union
select 4 , 'B ' , 20 union
select 5 , 'b ' , 100 union
select 6 , 'C ' , 1 union
select 7 , 'c ' , 98


select 序号,case when 序号=(select min(序号) from @t where 货物=a.货物) then 货物 else ' ' end as 货物, 数量
from @t a
order by 序号

------解决方案--------------------
--建立测试环境
create table #tb(item varchar(10),ld_qty_oh int)
insert #tb(item,ld_qty_oh)
select 'item0 ', '10 ' union all
select 'item0 ', '10 ' union all
select 'item0 ', '10 ' union all
select 'item0 ', '10 ' union all
select 'item1 ', '20 ' union all
select 'item1 ', '20 ' union all
select 'item1 ', '20 '
go
--执行测试语句
select identity(int,1,1) as id,t.item,t.ld_qty_oh into #tmp from #tb t
select item,case when exists(select 1 from #tmp where t.item = item and t.ld_qty_oh = ld_qty_oh and t.id > id) then null else ld_qty_oh end as ld_qty_oh
from #tmp t
go
--删除测试环境
drop table #tb,#tmp
go
/*--测试结果
item ld_qty_oh
---------- -----------