SELECT clientid,
CASE WHEN D.ccode = '-1' Then 'Did Not Show' ELSE D.ccode End ccode,
ca,
ot,
bw,
cshT,
dc,
dte,
approv
FROM dbo.emC D
WHERE year(dte) = year(getdate())
我得到正确的结果。
这是正确的结果,因为CCODE显示“没有显示”时的分贝值是“-1”
然而,当我做了UNION ALL这样我就可以得到总为每列,我得到当valcode for ccode为'-1'时,结果但'Did Not Show'不再显示。
有超过1000条值为'-1'的记录。
有人可以帮忙吗?
以下是带UNION的完整代码。
SELECT clientid,
CASE WHEN D.ccode = '-1' Then 'Did Not Show' ELSE D.ccode End ccode,
ca,
ot,
bw,
cshT,
dc,
dte,
approv
FROM dbo.emC D WhERE year(dte) = year(getdate())
UNION ALL
SELECT 'Total',
'',
SUM(D.ca),
SUM(D.ot),
SUM(D.bw),
SUM(D.cshT),
'',
'',
''
FROM emC D
WHERE YEAR(dte)='2011'
我也使用ROLLUP尝试,但这里真正的问题是,我不能让“没有表现出”要显示的文字时CCODE值为-1
ClientID CCODE ot ca bw cshT
019692 CF001 0.00 0.00 1.00 0.00 0.00
019692 CH503 0.00 0.00 1.00 0.00 0.00
010487 AC407 0.00 0.00 1.00 0.00 0.00
028108 CH540 0.00 0.00 1.00 0.00 0.00
028108 GS925 0.00 0.00 1.00 0.00 0.00
001038 AC428 0.00 0.00 3.00 0.00 0.00
028561 Did Not Show 0.00 0.00 0.00 0.00 0.00
016884 Did Not Show 0.00 0.00 0.00 0.00 0.00
05184 CF001 0.00 0.00 4.50 0.00 0.00
尽管数据类型没有改变。 ccode是nvarchar(50)。也许,我误解了你的观点。一个例子会很棒。感谢您的时间和帮助。 – Kenny
请注明两个查询将输出的列的确切列列结构。 – darnir
我已经用样本布局更新了上面的帖子。对不起,他们向左转。非常感谢你。我真的很感谢你的帮助。 – Kenny