2013-09-05 35 views
0

好的,所以問題的總體範圍是我使用表值函數,以便SSRS可以創建關於數據的各種報表,然後使用另一個程序來拼接所有這些報表一起。所以無論如何,問題是我需要獲得一個列的值,如果該行中的另一列包含一定的值。然後在將該值添加到另一個位置之後,將新值返回到數據庫行的列中,以便其他報告和使用該數據。因此,例如:如果符合特定條件,從一行中獲取信息

RETURNS @ReportTable table 
(
str_beta_group varchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
str_alpha_group varchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
str_group varchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
debit decimal(24, 6) NULL, 
credit decimal(24, 6) NULL, 
    credit_total decimal(24,6) NULL 

) 

我是新來的數據庫開發,我已經試過各種方法,我無法弄清楚如何獲得語法正確,我總是錯誤告終。因此,基於表上的我怎麼會寫這個邏輯用T-SQL語法:

decimal epsilon_temp, gamma_temp; 
    if(str_group='epsilon') 
{ 
epsilon_temp = credit; --the credit from that row where str_group = epsilon 
} 
else if(str_group='gamma') 
{ 
gamma_temp = credit; --the credit from that row where str_group = gamma 
} 
--Then after that UPDATE 
UPDATE @ReportTable 
SET credit_total = SUM(epsilon_temp + gamma_temp) 
WHERE str_group = epsilon 

回答

0

我以什麼你需要一個猜測。這是關於如何通過str_group獲取數據和分組結果?這看起來如何:

SELECT 
    CASE WHEN str_group is NULL THEN 'TOTAL' ELSE str_group END str_group 
    SUM(credit) credit 
FROM 
    table 
GROUP BY GROUPING SETS 
    ((),(str_group)) 
+0

謝謝你的回答。然而,那不是我真正想要的。我想也許我解釋了它有點麻煩。所以我現在試着更好地解釋它。上表中的一行將有一個str_beta_group,str_alpha_group,str_group,debit,credit和credit_total的列...對不起意外地打開進入開發.. –

相關問題