-1

Нужна помощь с предложением WHERE в этой хранимой процедуре.Хранимая процедура SQL Server WHERE:

Как написать WHERE с этими параметрами, и если какой-либо из этих параметров содержит определенное значение, тогда мне нужно получить все значения из этого столбца?

Образец, если @post1 содержит 1, затем выберите значения из этих столбцов, которые равны 1. Но если @post1 содержит 0, чем все значения из этого столбца. И это для всех других параметров.

ALTER PROCEDURE [dbo].[spStavke] 
    @dat1 date, 
    @dat2 date, 
    @god int, 
    @post1 int, 
    @post2 int, 
    @post3 int 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT 
     [test1] 
     ,[test2] 
     ,[test3] 
     ,[test3] 
    FROM 
     [PN].[dbo].[Stavke] AS stavke 
    LEFT JOIN 
     PN.dbo.Tip AS tip ON stavke.Vrsta = tip.id 
    LEFT JOIN 
     PN.dbo.Vrsta AS vrs ON stavke.Jedinica = vrs.id 
END 
+0

Как узнать, какие столбцы выбраны? –

+0

Post1 = 1 затем выберите, какие столбцы ???? –

+0

Нет, посмотрите сейчас в этом sp Мне нужно написать предложение WHERE .. sample Где date1 = @ dat1 и date2 = @ dat2 и god = @ god .... и если все значения существуют в выбранных столбцах, покажите это. Но если какой-либо параметр содержит 0, тогда в этом случае возвратите все значения. Пример, если @ dat1 содержит 0, а затем date1 = @ dat1 не использовать. – Nezir

ответ

2
SELECT 
     [test1] 
    ,[test2] 
    ,[test3] 
    ,[test3] 

FROM [PN].[dbo].[Stavke] as stavke 
left join PN.dbo.Tip as tip on stavke.Vrsta=tip.id 
left join PN.dbo.Vrsta as vrs on stavke.Jedinica = vrs.id 
WHERE (@Post1 = 0 OR (@Post1 = 1 AND 1 IN(TEST1,TEST2,TEST3)) 
AND (@Post2 = 0 OR (@Post2 = 1 AND 1 IN(TEST1,TEST2,TEST3)) 
Смежные вопросы