2017-09-11 65 views
1

我有一個查詢返回8列,其中2個查詢返回最大日期。我想創建第9列,它將返回一個數字,星號或其他內容以突出顯示第1列中的日期大於第2列中的行但仍保留所有行的行。以某種方式可能嗎?子查詢值大於另一個子查詢值

編輯: 這是查詢 我希望看到的差異的列MaxExpDateGB和MaxExpDatePH

select 
i.ITEM, 
i.COMPANY, 
count(distinct i.LOGISTICS_UNIT) as LocationsGB, 
sum(on_hand_qty) as StockGB, 
(select 
Count(distinct location) 
from 
LOCATION_INVENTORY b where b.ITEM = i.ITEM and b.TEMPLATE_FIELD1 = '139' and b.TEMPLATE_FIELD4 is not null and b.TEMPLATE_FIELD5 is null) as LocationsPH, 
(select 
sum(on_hand_qty) 
from 
LOCATION_INVENTORY b where b.ITEM = i.ITEM and b.TEMPLATE_FIELD1 = '139' and b.TEMPLATE_FIELD4 is not null and b.TEMPLATE_FIELD5 is null) as StockPH, 
MAX(i.Expiration_DATE) as MaxExpDateGB, 
(select 
MAX(a.Expiration_DATE) 
from 
LOCATION_INVENTORY a where a.ITEM = i.ITEM and a.TEMPLATE_FIELD1 = '139' and a.TEMPLATE_FIELD4 is not null and a.INVENTORY_STS = 'available') as MaxExpDatePH 
from 
LOCATION l inner join LOCATION_INVENTORY i on l.LOCATION = i.LOCATION inner join ITEM t on i.ITEM = t.ITEM 
where 
t.USER_DEF6 = '10' 
and i.LOCATION = '000-gb-01' 
group by 
i.item,i.company 
+1

是的,它是可能的。您今天可以在大多數DBMS系統中使用案例表達式。 –

+0

我刪除了不兼容的數據庫標籤。你的問題的答案是「是的,這是可能的,不知何故」。除此之外不可能再添加,因爲你的問題缺乏相關信息。 –

+0

顯示您的查詢,我們可以幫助更輕鬆。並且請將您的請求標記爲您正在使用的DBMS(PostgreSQL,Oracle,...)。 –

回答

1

沒有任何重構

select *, case when LocationsPH > StockPH then '*' end flag 
from (
    select 
     i.ITEM, 
     i.COMPANY, 
     count(distinct i.LOGISTICS_UNIT) as LocationsGB, 
     sum(on_hand_qty) as StockGB, 
     (select 
      Count(distinct location) 
      from 
      LOCATION_INVENTORY b where b.ITEM = i.ITEM and b.TEMPLATE_FIELD1 = '139' and b.TEMPLATE_FIELD4 is not null and b.TEMPLATE_FIELD5 is null 
     ) as LocationsPH, 
     (select 
      sum(on_hand_qty) 
      from 
      LOCATION_INVENTORY b where b.ITEM = i.ITEM and b.TEMPLATE_FIELD1 = '139' and b.TEMPLATE_FIELD4 is not null and b.TEMPLATE_FIELD5 is null 
     ) as StockPH, 
     MAX(i.Expiration_DATE) as MaxExpDateGB, 
     (select 
      MAX(a.Expiration_DATE) 
      from 
      LOCATION_INVENTORY a where a.ITEM = i.ITEM and a.TEMPLATE_FIELD1 = '139' and a.TEMPLATE_FIELD4 is not null and a.INVENTORY_STS = 'available' 
     ) as MaxExpDatePH 
    from 
    LOCATION l 
    inner join LOCATION_INVENTORY i on l.LOCATION = i.LOCATION inner join ITEM t on i.ITEM = t.ITEM 
    where 
    t.USER_DEF6 = '10' 
    and i.LOCATION = '000-gb-01' 
    group by 
    i.item,i.company 
) t 
+0

這樣做的工作,謝謝你隊友。 –