Что не так с этим SQL-запросом Data Explorer? - PullRequest
5 голосов
/ 25 июня 2010

Я пытаюсь написать Сколько я набрал? запрос на Стек * Обозреватель данных .

Изменение существующего запроса привело меня так далеко:

-- How much did I type?

DECLARE @UserId int = ##UserId##

  select sum(len(Body)) AS 'Posts' from posts where owneruserid = @UserId,
  select sum(len(Text)) AS 'Comments' from comments where userid = @UserId,
  (select sum(len(Body)) from posts where owneruserid = @UserId +
  select sum(len(Text)) from comments where userid = @UserId) AS 'Total'

Я ожидаю три столбца и одну строку, примерно так:

Posts    Comments    Total
1234     5678        6912

Но есть некоторая синтаксическая проблема, из-за которой я получаю:

Ошибка: неправильный синтаксис рядом с ','.Неверный синтаксис рядом с ','.Неверный синтаксис рядом с ключевым словом «выбрать».Неверный синтаксис рядом с ')'.

Какой правильный синтаксис для этого?

Ответы [ 4 ]

3 голосов
/ 25 июня 2010

Вот рабочий запрос:

DECLARE @UserId int;
set @UserID = 4;  

Select *, (Posts+Comments) as Total
FROM
  (select sum(len(Body)) AS Posts    FROM posts    where owneruserid = @UserId ) p,
  (select sum(len(Text)) AS Comments FROM comments where userid      = @UserId ) c
1 голос
/ 25 июня 2010

Привет, ваша проблема в том, что у вас есть 3 оператора, соединенных с 1 оператором - просто сделайте одно заявление из, если: как

select sum(len(Body)) AS 'Posts', sum(len(Text)) AS 'Comments' , sum(len(Body)) + sum(len(Text)) AS Total
from posts t1 inner join comments t2 on t1.owneruserid = t2.userid 
where t1.owneruserid = @UserId

Надеюсь, я набрал правильно ...

1 голос
/ 25 июня 2010

Я бы сделал это так ...

declare @ownerId int
set @ownerId = 1

declare @Posts bigint
declare @Comments bigint

select
@Posts = sum(len(Body))
from Posts where owneruserid = @ownerId

select
@Comments = sum(len(Text))
from Comments where userid = @ownerId

select @Posts as 'Posts', @Comments as 'Comments', @Posts + @Comments as 'Total'
0 голосов
/ 25 июня 2010
-- How much did I type?

/* If this is to be a parameter from your app, you don't need to declare it here*/
DECLARE @UserId int;
set @UserID = 4;  

Select *, (Posts+Comments) as Total
FROM 
  (select sum(len(Body)) AS Posts    FROM posts    where owneruserid = @UserId ) p,
  (select sum(len(Text)) AS Comments FROM comments where userid      = @UserId ) c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...