2011-03-14 110 views
0

第一次在網站上發佈,所以我希望我不會違反任何規則,並且有人可以幫助我。

我有如下表:

machine_name variable_name variable_value 
machine1  WAV    56789 
machine1  WAV_CONT   5 
machine1  AVI    67890 
machine1  AVI_CONT   3 
machine2  WAV    786579 
machine2  WAV_CONT   20 
machine2  AVI    182641 
machine2  AVI_CONT   9 

我使用的參數($ 1)。我想創建一個查詢,給出了以下的結果,當用戶輸入「WAV」 :

machine_name variable_name  space  count 
machine1  WAV    56789  5 
machine2  WAV    786579  20 

或者當用戶輸入「AVI」這等結果

machine_name variable_name  space  count 
machine1  AVI    67890  3 
machine2  AVI    182641  9 

是否有可能兩個字段只使用一個參數?我的意思是,有沒有辦法將$ 1連接到字符串「_CONT」,以便用戶只需輸入「WAV」或「AVI」並獲得以上任何結果?

感謝

+2

你是不是應該考慮改變你的表呢? – Snowbear 2011-03-14 18:28:35

+0

您正在使用哪些DBMS? – 2011-03-14 19:13:41

回答

0

我會添加表中標記爲「類型」的新領域。然後您可以使用「WAV」或「AVI」進行過濾。

如果你只需要一個查詢:

declare @param varchar(10) 
set @param = 'WAV' 

Select * from YOUR_TABLE where variable_name = @param 
0
select * from my_table where variable name in (@param, @param + '_CONT') 
0

可以使用,窮人的支點:

select 
    machine_name, 
    @param as variable_name, 
    -- Turn rows into columns: 
    -- These expressions are zero for the rows we don't want. 
    sum(case when variable_name like '%_CONT' then 0 else variable_name end) as space, 
    sum(case when not variable_name like '%_CONT' then 0 else variable_name end) as count 
from TABLE_NAME 
group by machine_name