我有一个临时表(#WorkTable),如下所示:
InstrID CountryName CreditRating
1 UK AA
2 UK Unclassified
3 South Africa A
4 South Africa A
5 South Africa Unclassified
我希望能够做的是更新此表,其中CreditRating列为“未分类”及其实际信用评级。所以在上面的例子中,未分类的英国将成为'AA',而南非的将成为'A'。
我不确定这方面的编码,我们将非常感谢任何帮助。
答案 0 :(得分:0)
我认为这个例子可以帮助你。
String sql = "update table_name set CreditRating = (select unique CreditRating from table_name where CountryName = ? and CreditRating != 'classifie...') where CountryName = ? and CreditRating = 'classifie...'";
在这里,您可以将countryName作为参数传递。
答案 1 :(得分:0)
你似乎对SQL很陌生。你需要做的是"加入"表到查找值。您可以在很多地方找到有关SQL基础知识的大量帮助,但如果您需要快速解决方案,请尝试以下方法:
如果你有一个单独的国家和信用评级表,(我假设该表的名称是评级,国家名称和评级匹配。)
update #WorkTable
Set w.Creditrating = r.CreditRating
from #WorkTable w join Rating r on w.CountryName=r.CountryName
where w.CreditRating='Unclassified'
另一方面,如果不存在单独的表,并且您想要根据相同的临时表更新未分类的值,那么您需要假设表中已存在一个具有该国家的CreditRating的条目(在你发布的情况下,有。)它还需要每个国家只有一个CreditRating。在这种情况下,以下内容应该有效:
update #WorkTable
Set w.Creditrating = w2.CreditRating
from #WorkTable w join
(Select distinct CountryName, CreditRating from #WorkTable where CreditRating<>'Unclassified') w2
on w.CountryName=w2.CountryName
where w.CreditRating='Unclassified'
这使用表本身来查找值,方法是查看表两次 - 一次作为要更新的表,其中最后一行将更新内容限制为仅未分类的项,一次作为源表,仅在使用分类评级。如果这对您不起作用,请发表评论并提供更多详细信息。
答案 2 :(得分:0)
下面的sql脚本会将任何未分类的信息更新为“实际”信用评级。我希望这会有所帮助。
CREATE TABLE #WorkTable
(
InstrID INT,
CountryName VARCHAR(50),
CreditRating VARCHAR(20)
)
INSERT INTO #WorkTable VALUES ( 1, 'UK','AA');
INSERT INTO #WorkTable VALUES ( 2, 'UK','Unclassified');
INSERT INTO #WorkTable VALUES ( 3, 'South Africa','A');
INSERT INTO #WorkTable VALUES ( 4, 'South Africa','A');
INSERT INTO #WorkTable VALUES ( 5, 'South Africa','Unclassified');
WITH cteUnclassified
AS
(
SELECT InstrID,
CountryName,
CeditRating
FROM #WorkTable
WHERE CreditRating != 'Unclassified'
)
UPDATE #WorkTable
SET CreditRating = u.CreditRating
FROM #WorkTable wt
INNER JOIN cteUnclassified u
ON wt.CountryName = u.CountryName
WHERE wt.CreditRating = 'Unclassified'
SELECT *
FROM #WorkTable
以下查询的结果:
InstrID CountryName CreditRating 1英国AA 2英国AA 3南非A. 4南非A. 5南非A