【发布时间】:2013-04-25 09:09:05
【问题描述】:
我有一个类似于以下的表格:
Date Description Value1 Value2
01/01/2012 shiny colour 2 0
01/01/2012 yellow colour 2 2
03/01/2012 matt colour 2 2
03/01/2012 matt 4 1
03/01/2012 shiny 2 2
我想编写一个 SELECT SQL 查询 (T-SQL),它将输出上述所有列,但还会显示一个额外的列作为 SELECT 语句的输出,其值取决于单词“color”的存在描述(如果存在“颜色”,则为一个值,否则显示不同的值)。
(我还想在其顶部显示另一个额外的列,其值取决于描述列中是否存在“matt”或“shiny”。但我认为这样做的方法是相似的) .
我相信我应该能够使用 COALESCE 函数来做到这一点,但我对此并不熟悉,并且正在努力让任何工作正常工作?
扩展
您好,谢谢您的回答。他们真的很有帮助。我对这个问题还有一个扩展。我的第二个生成列依赖于第一个生成列中的信息。所以像:
SELECT *,
CASE
WHEN Description LIKE '%colour%' THEN 'SomeValue'
ELSE 'Unclassified'
END AS Category1,
CASE
WHEN AnotherColumn LIKE 'Something' THEN 'SomeValue'
WHEN Category1='Unclassified' THEN 'Unclassified'
ELSE 'Generic'
END AS Category2
FROM table_name
如何让 Category2 的输出依赖于 Category1 的输出?我正在尝试类似上述的方法,但它不起作用。
我的扩展问题在这里得到了解答: T-SQL CASE statement relies on another CASE statement in same SELECT query
【问题讨论】:
标签: sql sql-server tsql case