2010-06-25 31 views
5

Tôi đang cố viết Tôi đã nhập bao nhiêu? truy vấn trên Stack* Data Explorer.Có vấn đề gì với truy vấn SQL Data Explorer này?

Sửa đổi một truy vấn hiện đã cho tôi này cho đến nay:

-- 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' 

Tôi mong ba cột và một hàng, một cái gì đó như thế này:

Posts Comments Total 
1234  5678  6912 

Nhưng có một số vấn đề cú pháp, do đó Tôi nhận được:

Error: Incorrect syntax near ','. Incorrect syntax near ','. Incorrect syntax near the keyword 'select'. Incorrect syntax near ')'.

Cú pháp chính xác cho điều này là gì?

+0

Câu hỏi liên quan đến http://odata.stackexchange.com/stackoverflow/query/new cụ thể. Truy vấn SQL ngẫu nhiên không giúp ích gì. –

+0

@Aaron Harun: Mọi người đang làm gì sai? Có phải như Data Explorer chỉ hỗ trợ một tập hợp con các truy vấn SQL hợp lệ không? – Lazer

+0

Về cơ bản, có. Họ cần phải sử dụng TSQL, nhưng một số thì không. (http://www.devguru.com/technologies/t-sql/home.asp) Trong hầu hết các ví dụ "sai", có lỗi cú pháp và các lỗi khác mà chúng sử dụng các tên trường khác nhau. * nhún vai * Nó xảy ra. –

Trả lời

3

Đây là một truy vấn làm việc:

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

tôi sẽ làm điều đó theo cách này ...

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

Ban đầu, tôi đã quên xóa các câu lệnh chọn trước câu lệnh "tổng hợp". Bây giờ nó sẽ tốt. – dhillis

+0

xin lỗi, tôi mệt mỏi và không nhận thấy các lựa chọn ... phiên bản mới đến ... – dhillis

+0

Kiểm tra truy vấn tại đây: http://odata.stackexchange.com/stackoverflow/query/new –

0
 
-- 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 
+0

Bạn có thêm một bằng, ngoài ra, nó hoạt động. –

1

Hi vấn đề của bạn là bạn đã 3 Báo cáo nối tới 1 Bản Tuyên Bố - chỉ cần thực hiện một Tuyên bố nếu: như

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 

Hy vọng tôi đã nhập đúng ...

Các vấn đề liên quan