相关疑难解决方法(0)

JOIN ON子句中的T-SQL Case语句

我试图在一个JOIN ON子句中构建一个case/if语句.

LEFT JOIN [CTSTRC] [Statuses] ON RIGHT([Statuses].[STRID], 3) = [CTE].[F61]
Run Code Online (Sandbox Code Playgroud)

问题是该列[Statuses].[STRID]包含文本和数字.我将它与之比较的列[CTE].[F61]是一个整数.

有没有办法检测列[Statuses].[STRID]是否有字符或数字,如果是字符,那么将其设置为0?

这是一个伪查询来帮助:

LEFT JOIN [CTSTRC] [Statuses] ON RIGHT((CASE [Statuses].[STRID] WHEN TEXT THEN 0 ELSE CAST([Statuses].[STRID] AS INT) END), 3) = [CTE].[F61]
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

谢谢!

sql t-sql sql-server sql-server-2005

6
推荐指数
1
解决办法
4万
查看次数

T-SQL根据输入参数的值使用不同的WHERE子句

我想WHERE根据输入参数的值更改查询的子句.我猜这是可能的,但似乎我以错误的方式接近它?

我的SP查询的简化版本:

CREATE PROCEDURE [dbo].[GetMailboxMessagesByStatus]
    @UserId             UNIQUEIDENTIFIER,
    @MessageStatus      INT
AS
BEGIN
    SELECT  * 
    FROM  MailboxMessages m
    WHERE
    CASE @MessageStatus
        WHEN 4 THEN m.SenderId = @UserId    --Sent
        ELSE m.RecipientId = @UserId        --Inbox
    END
END 
GO
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

4
推荐指数
2
解决办法
7429
查看次数

条件where where子句SQL Server 2012

我已经四处寻找,但没有找到与我想要实现的相似的情况.我只想在条件为真时执行where子句表达式,否则我想忽略与它不匹配的数据.

Where (
        case when LeaveDateTime > FromDate and EnteringDateTime < ToDate then
        (dateadd(d, Threshhold, LeaveDateTime) >= EnteringDateTime
        end
);
Run Code Online (Sandbox Code Playgroud)

我在'> =附近得到错误的语法有人可以帮我解决这个问题吗?

sql t-sql sql-server-2012

2
推荐指数
1
解决办法
469
查看次数

Where子句中的T-SQL案例条件

我试图做这个查询,我有一个where子句.问题是我需要在where条件下使用运算符IN但我无法弄清楚我错过了什么.

有人可以帮忙吗?

这是我的查询

DECLARE @OP INT = 1
SELECT * FROM Table
WHERE
Table.[status] IN (CASE WHEN @OP = 1 THEN (5,6) ELSE (12) END)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

1
推荐指数
1
解决办法
1508
查看次数

SQL where子句大于或小于case语句

我有一个带有X和Y坐标列的对象列表。

当变量值大于5804400时,我只想选择Y坐标值大于5804400的对象。

这是我的尝试,但是SQL不喜欢它。

Select * from Panels p
where case when @Val > 5804400 then p.Y > 5804400 else p.Y < 5804400 end 
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

1
推荐指数
1
解决办法
5080
查看次数

如何在WHERE条件下级联CASE sql

  • 我正在为变量@TextSearchWord搜索单词匹配

  • 我有一个@SearchCriteria变量,可能有5个值!

  • 根据这个价值,我选择从哪个领域搜索我的单词!

- 所以我只需要在"WHERE"语句中级联"CASE"语句,并像select语句中的其他示例一样!

SELECT COUNT(WordID) AS WordQty
FROM itinfo_QuranArabicWordsAll
WHERE (SiteID = @SiteID) 
AND (QuranID = @QuranID) 
AND (SuraID BETWEEN @StrtSuraID AND @EndSuraID) 
AND (VerseOrder BETWEEN @StrtVerseSortOrder AND @EndVerseSortOrder)
AND ( 
        -- here is my problem : 
        CASE 
          WHEN (@SearchCriteria = 'DictNM') THEN  (WordDictNM = @TextSearchWord )
          ELSE CASE 
                 WHEN (@SearchCriteria = 'DictNMAlif') THEN (WordDictNMAlif = @TextSearchWord)  
                 ...
               END        
        END
    )
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

0
推荐指数
1
解决办法
357
查看次数

T-SQL.WHERE子句中的CASE表达式使用IN运算符

如果用户输入800 @WorkShop,则应返回所有具有800个车间ID和900个车间ID的记录.

如果用户传递任何其他ID,@WorkShop它应该只返回选择@WorkShopId的记录.

我试过以下:

SELECT *
FROM Test
WHERE Workshop IN ( 
                    CASE 
                        WHEN @WorkShop = N'800' THEN N'900' AND N'800' 
                        ELSE @WorkShop 
                    END 
                    ) 
Run Code Online (Sandbox Code Playgroud)

这会返回一个错误:

Incorrect syntax near the keyword 'and'.
Run Code Online (Sandbox Code Playgroud)

所以总之如果用户传递800作为@WorkShop参数它应该返回如下内容:

Workshop IN ('800', '900')
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server case where

0
推荐指数
1
解决办法
1717
查看次数

where子句SQLSERVER中的case语句

我试着四处寻找但找不到任何可以帮助我的东西.

我正在尝试在SQL中执行此操作:

DECLARE @onlyMM INT

SET @onlyMM = 1

SELECT *
FROM cdn.magnag
WHERE CASE @onlyMM
        WHEN 1
            THEN man_zrdtyp NOT IN (
                    1616
                    ,2001
                    )
        ELSE - 1
        END
Run Code Online (Sandbox Code Playgroud)

我有一个问题:

where case @onlyMM when 1 then man_zrdtyp not in (1616,2001) else -1 end
Run Code Online (Sandbox Code Playgroud)

如何case为操作员正确制作not in

sql t-sql sql-server

0
推荐指数
1
解决办法
82
查看次数

SQL Server:where子句中的IF条件

我试图在where子句中放置一个if条件,我无法找出我想要的正确语法.

逻辑应该是如果某个时间段等于特定的数字然后检查以确保pdftype不为null否则不要检查所有.

这是我到目前为止所拥有的:

where  
    g.ReportInstanceID = blah
    and rcr.FormID = blah
    and rcr.FormSectionID = blah
    and rcr.SubSectionID = blah
    and CASE rcr.DataCollectionPeriodID 
           WHEN 163 THEN (PDFType IS NOT NULL)
        END
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

0
推荐指数
1
解决办法
2101
查看次数