我不小心删除了数据库表,不得不从过时的备份中恢复它。我在备份和恢复之间做了一些事情,这改变了我从某个查询中收到的结果。我想要五个结果,它给了我七个,因为结果行有不同的Color
值。不知怎的,在我完美地工作之前。这是我的SQL:
select LocationID, SUM(TransAmount) as TotalSales, DBAName, Color
from dbx.dbo.SampleData
group by LocationID, DBAName, Color
曾经给我:
LocationID TotalSales DBAName Color
267529000000 7660.51 FASTWAY #1 TACO BELL Red
267529000001 2681.801 FASTWAY #2 TACO BELL Orange
267529000002 3020.57 FASTWAY #3 TACO BELL Yellow
267529000003 3062.63 FASTWAY #4 TACO BELL Green
267529000004 3401.36 FASTWAY #5 TACO BELL Blue
但是现在看似相同的数据它给了我:
LocationID TotalSales DBAName Color
267529000000 2183.26 FASTWAY #1 TACO BELL Indigo
267529000000 2901.48 FASTWAY #1 TACO BELL Red
267529000000 2575.77 FASTWAY #1 TACO BELL Violet
267529000001 2681.80 FASTWAY #2 TACO BELL Orange
267529000002 3020.57 FASTWAY #3 TACO BELL Yellow
267529000003 3062.63 FASTWAY #4 TACO BELL Blue
267529000004 3401.36 FASTWAY #5 TACO BELL Green
总是将Indigo和Violet作为颜色,但忽略了它们并使用Red作为主要颜色。有任何想法吗?试图绕过这种令人沮丧的事件?谢谢!
答案 0 :(得分:0)
并不是很清楚你想要什么,但是如果要让Indigo
和Violet
计算并显示为Red
,你可以使用简单{{1}的内部查询更改颜色然后将其包装在外部查询中进行聚合和分组的语句。它将获得所需的结果:
CASE
然而,这可能不是一个好的解决方案。
编辑:找到第一个值的另一种方法。虽然可能不利于表现:
SELECT LocationID, SUM(TransAmount) AS TotalSales, DBAName, Color
FROM (
SELECT LocationID, TransAmount, DBAName,
CASE Color
WHEN 'Indigo' THEN 'Red'
WHEN 'Violet' THEN 'Red'
ELSE Color END
AS Color
FROM dbx.dbo.SampleData
) x
GROUP BY LocationID, DBAName, Color