我们有一个表(销售计划表单MDS),如
> 20171201 2017 12 2.155.125 ...some other values
> 20171101 2017 11 2.155.125 ...some other values
我想查看当月的记录(比如2018/01)。
我试过了:
IF EXISTS
(
SELECT
spc.DateID
FROM
dim.SalesPlanCountry spc
JOIN dim.Calendar cal ON spc.DateID = cal.DateID
WHERE
cal.CalendarYear = @Year
AND cal.MonthOfYear = @Month
) THEN
SELECT 'OK'
ELSE SELECT 'Missing'
返回
关键字'THEN'附近的语法不正确。
帮助将不胜感激。
答案 0 :(得分:1)
就像我说你不需要THEN
关键字一样,只需使用SELECT <values>
或使用CASE WHEN
语句(参见 phoniq 回答)
IF EXISTS (
SELECT
spc.DateID
FROM dim.SalesPlanCountry spc
JOIN dim.Calendar cal
ON spc.DateID = cal.DateID
WHERE cal.CalendarYear = @Year
AND cal.MonthOfYear = @Month
)
SELECT 'OK'
ELSE
SELECT 'Missing'
答案 1 :(得分:0)
SELECT CASE WHEN spc.DateID = NULL THEN 'OK' ELSE 'Missing' END
FROM
dim.SalesPlanCountry spc
JOIN dim.Calendar cal ON spc.DateID = cal.DateID
WHERE
cal.CalendarYear = @Year
AND cal.MonthOfYear = @Month
答案 2 :(得分:0)
这不能简化为......
SELECT CASE COUNT(*) WHEN 0 THEN 'Missing' ELSE 'OK' END
FROM dim.SalesPlanCountry spc
JOIN dim.Calendar cal ON spc.DateID = cal.DateID
WHERE cal.CalendarYear = @Year
AND cal.MonthOfYear = @Month;
无需EXISTS
。在执行COUNT
数据集时,即使数据集没有返回任何行,也会始终返回一个值。