我有一个名为RecordType
的字段,其中包含三个不同的记录,1, 2, 3.
每个都有不同的记录。我想从另一个我从Limit
叫RecordType 1
的字段中获取余额并将其插入RecordType 3
中,但是我不确定如何执行此操作。这将进入Crystal Report,我希望能够完全取消RecordType 1
。
我尝试了一个简单的case语句,仅此而已,我真的想不出任何其他方法来做到这一点(我确定有很多工作要做)。
CASE
WHEN FA.RecordType = 3 THEN
FA.Limit
END AS LimitTest
记录类型|限制
1 | 5,000,301
2 | 0
3 | 0
记录类型|限制
2 | 0
3 | 5,000,301
答案 0 :(得分:0)
您似乎想将类型1和类型3的limit
组合在一起。您可以对表达式进行聚合:
select (case when recordtype = 1 then 3 else recordtype end) as recordtype,
sum(limit) as limit
from t
group by (case when recordtype = 1 then 3 else recordtype end);
答案 1 :(得分:0)
您可以尝试在选择语句中使用子查询和Case语句,例如:
SELECT [RecordType],
(CASE [RECORDTYPE] WHEN 3 THEN
(SELECT LIMIT from Table_1 WHERE RECORDTYPE = 1)
ELSE LIMIT END) LimitTest
FROM TABLE_1 WHERE RECORDTYPE <> 1
答案 2 :(得分:0)
您说:
对不起,我的格式设置很糟糕,我不确定如何正确地进行格式化。但是要回答您的问题,类型1和3永远不会与3永远不会具有相同的值。我想基本上将值从类型1移到类型3
这让我认为这将是最简单的:
DELETE FROM table WHERE RecordType = 3
UPDATE table SET RecordType = 3 WHERE RecordType = 1
3永远没有值,所以让我们先摆脱它们,然后1拥有值,但我们希望它是3,所以只需将所有1都更新为3s
如果您不希望删除它,只需屏蔽它即可:
SELECT 3 as RecordType, Limit FROM table WHERE RecordType = 1
答案 3 :(得分:0)
如果要将值从类型1移到类型3,请在查询中进行简单的更新。
update t set t.value= t1.value from table as t , table as t1 where t.recordtype=3 and t1.recordtype=1
或
delete from table where recordtype = 3
update recordtype set recordtype=1 where recordtype=3
这可能会起作用
答案 4 :(得分:0)
SELECT
IIF(A.RECORDTYPE = 1,3,A.RECORDTYPE) AS RECORDTYPE,
A.LIMIT
FROM
(
SELECT 1 RECORDTYPE,5000301 LIMIT UNION ALL
SELECT 2 RECORDTYPE,0 LIMIT UNION ALL
SELECT 3 RECORDTYPE,0 LIMIT
) A
WHERE A.RECORDTYPE IN (1,2)
ORDER BY RECORDTYPE
检查是否适合您。