如果分组列包含值并且取决于结果创建值为真或假的列,如何检查 TSQL
How to check in TSQL if grouped column contains value and depends of result create colum with value true or false
我有 3 个 table。检查屏幕截图。
我想要 3 列的视图
是,标题,IsVotedByUser
在 IsVotedByUser 列中,我需要使用任何 "aggregate" 函数来检查 table UserInquiry 中是否包含已声明的变量 @UserId。
取决于结果我想在此列中使用 True 或 False。
像这样:
我也试过:
谢谢
您需要使用Conditional Aggregate
SELECT i.id,
i.title,
Count(CASE WHEN ui.userid = @userid THEN 1 END)
FROM Inquiry I
LEFT JOIN UserInquiry ui
ON ui.userid = i.id
GROUP BY i.id,i.title
SELECT i.Id, i.Title,
CASE WHEN SUM(CASE WHEN ui.UserId = @UserId then 1 ELSE 0 END) > 0
THEN 'True' ELSE 'False' END as IsVotedByUser
FROM [dbo].[Inquery] as i
LEFT JOIN [dbo].[UserInquery] as ui
ON i.Id = ui.InquiryId
GROUP BY i.Id, i.Title
我有 3 个 table。检查屏幕截图。
我想要 3 列的视图 是,标题,IsVotedByUser
在 IsVotedByUser 列中,我需要使用任何 "aggregate" 函数来检查 table UserInquiry 中是否包含已声明的变量 @UserId。 取决于结果我想在此列中使用 True 或 False。
像这样:
我也试过:
谢谢
您需要使用Conditional Aggregate
SELECT i.id,
i.title,
Count(CASE WHEN ui.userid = @userid THEN 1 END)
FROM Inquiry I
LEFT JOIN UserInquiry ui
ON ui.userid = i.id
GROUP BY i.id,i.title
SELECT i.Id, i.Title,
CASE WHEN SUM(CASE WHEN ui.UserId = @UserId then 1 ELSE 0 END) > 0
THEN 'True' ELSE 'False' END as IsVotedByUser
FROM [dbo].[Inquery] as i
LEFT JOIN [dbo].[UserInquery] as ui
ON i.Id = ui.InquiryId
GROUP BY i.Id, i.Title