我正在寻找一种方法在MS SQL Server中实际创建一些重复结果。我明白,通常你正在寻找不创建重复的方法,但在这个例子中,我需要返回所有单独的行。具有多个结果的表达式表达式
我正在使用一个约1000万行和33列的表格。该表由第一列中的ID组成,其余列中有'Y'或'NULL' - 大部分列为NULL。
在1000万行中,有800万行每行只有一个'Y',剩下的2百万行有多个行,并且'Y'连续。
对于具有单个“Y”的行,基本情况表达式完美地适用于创建单列结果。
这是我的问题,虽然 - 我想要两行,每个'Y'一个,如果在一行中有多个'Y'。
下面是一个小的去识别样本。
ID FLAG1 FLAG2 FLAG3 FLAG4 FLAG5
188 NULL NULL NULL NULL NULL
194 Y NULL NULL NULL NULL
200 Y NULL NULL NULL Y
我正在尝试使用这样的案例表达式。
Select
ID
,Case
When [FLAG1] = 'Y'
Then 'FLAG1'
When [FLAG2] = 'Y'
Then 'FLAG2'
End as 'Service_Line'
我想要的是一个看起来像这样的结果。
ID Service_Line
194 FLAG1
200 FLAG1
200 FLAG5
我的问题是,Case表达式只返回第一个结果,所以我最终与此。
ID Service_Line
194 FLAG1
200 FLAG1
是一个案例表达式适合我想要完成的事情,还是应该试图以某种其他方式去做这件事?
你正在使用哪种数据库系统(MySQL,PostgreSQL,Oracle,MS SQL Server等)?这可能会有助于您以优雅的方式解决此类问题。 – IMSoP
编辑您的问题并指定您正在使用的数据库。 –
检查您的RDBMS是否支持UNPIVOT。 –