这是我使用查询返回的结果集:
empname itemssold
JJ 14
Run Code Online (Sandbox Code Playgroud)
但这是我想要的结果集:
empname itemssold
AA 0
BB 0
CC 0
DD 0
JJ 14
RR 0
Run Code Online (Sandbox Code Playgroud)
它似乎会拉动所有员工,直到我将where子句添加到我的查询中,这让我想知道我是否在错误的位置添加了它,或者我是否错误地设置了我的查询?
以下是我使用的 DDL 和我的查询:
Create Table #ShowAll
(
empname varchar(1000)
,empid varchar(100)
)
Create Table #Data
(
empid varchar(100)
,itemssold int
,beenverified varchar(100)
)
Insert Into #ShowAll Values
('JJ', 'J1'),
('AA', 'A1'),
('BB', 'B1'),
('CC', 'C1'),
('DD', 'D1'),
('RR', 'R1')
Insert Into #Data Values
('J1','14', 'Yes'),
('A1', '12','No'),
('B1', '13', 'No')
Select sa.empname
, Da.itemssold
FROM #ShowAll sa …Run Code Online (Sandbox Code Playgroud) 我想使用 case 语句总结一些值。我的问题是编译器会抱怨,如果我没有在查询的末尾添加一个组,这会否定我的 Distinct,哈哈。例如,在我下面的示例中,red12即使 1 个条目不符合上述任何条件,这也会返回 2 个条目,但这让Group By我感到困惑!我怎样才能运行这个查询并只返回适用的结果,即case statements显示什么?
Create Table #Bobsled
(
[event] varchar(100)
,[time] decimal(18,4)
,employeeID varchar(25)
,name varchar(500)
)
Insert Into #Bobsled Values
('Walk', '16.32','red12', 'red arrow')
,('Eat', '5.12', 'red12', 'red arrow')
,('Run', '32.13','pink01', 'pink pig')
,('Walk', '2.12', 'bl81', 'blue fire')
,('Sleep', '8.12', 'gr99', 'green pony')
Select Distinct
employeeid
,case when [event] = 'Walk' then SUM([time]) else 0 end as walktime
,case when [event] = 'RUN' then SUM([time]) else 0 …Run Code Online (Sandbox Code Playgroud)