Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 3 years ago.
Improve this question
I want to select data from a table with clause involving AND and OR.
Here is my sql query:
select *
from WORKTR
where status='Active' OR status='Inactive'and Start_date='2020-02-10'
However, the query above only return 3 from 10 rows in the table which means it does not return the all of the rows that obey the conditions. Please help me to show the right way to write the query.
You should wrap your condition correctly like below
where status='Active' OR (status='Inactive' and Start_date='2020-02-10')
Add parenthesis, according to your needs
select *
from WORKTR
where (status='Active' OR status='Inactive)'and Start_date='2020-02-10'
OR
select *
from WORKTR
where status='Active' OR (status='Inactive'and Start_date='2020-02-10')
OR
select *
from WORKTR
where status IN ('Active','Inactive') and Start_date='2020-02-10'
Related
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 6 years ago.
Improve this question
I have tried these:
1.if (EXEC SQL EXIST SELECT ...)
2.EXEC SQL IF EXIST SELECT ...
but none of these work,any help?
Select the count and check whether it is zero. Something along this line:
int a;
EXEC SQL SELECT count(*) INTO :a
FROM some_table
WHERE some_condition;
if (a != 0)...
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
Is it possible to use case statement inside stuff function with for xml path() ?
Yes you can use a 'CASEstatement insideSTUFFwhen usingFOR XML PATH`
SELECT STUFF('alpha',3,5,CASE WHEN 1=1 THEN 'a' ELSE 'b' END) FOR XML PATH('test')
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
Below is the expression it is used to concatenate but for some reason the result is giving just first two letter of each string. I'm little confuse what's wrong with it. Below expression is working fine in sybase but not in sql server.Thank you
Example:
F
G
Required Output:
For Young Musicians Program
GV- Record Sheet.
IF(ISNULL(fd_m_an_report),'', fd_m_an_report ) +
IF((NOT ISNULL(fd_m_an_report)) AND (NOT ISNULL(fd_m_comment)), '~r~n~r~n', '') +
IF(ISNULL(fd_m_comment ),'', fd_m_comment)
This looks like you are using Excel functions. To get something similar in SQL Server syntax you need:
select
ISNULL(fd_m_an_report,'') +
case when fd_m_an_report + fd_m_comment is null then '' else '~r~n~r~n' end +
ISNULL(fd_m_comment,'')
from MyTable
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
In Sql Server I'd like to be able to return a result form my query if there is an exact match, i.e. I only match on one row, and if there isn't I'd like to return no result at all.
I realize it's fairly easy to handle this in code, once the sql query has returned, but I'd like to be able to do the test in Sql Server, if it's achievable reasonably easily.
If I understand correctly, you ONLY want to get the data back if you match one and only one record.
One way to do this is to use an intermediate result set and COUNT or ##ROWCOUNT
You can put your results into a #TEMP table or #Table variable, then inspect either that table or the ##ROWCOUNT variable to determine if you got one row back. If you do, return the intermediate result set.
If this is SQL Server 2005 or later version, you can use COUNT() OVER like this:
WITH matches AS (
SELECT
...,
TotalMatches = COUNT(*) OVER ()
FROM ...
WHERE ...
)
SELECT *
FROM matches
WHERE TotalMatches = 1
;
The matches CTE finds all rows matching the main requirement and returns them along with the total count of matches. The main query returns the found results only if the additional requirement, total match count of 1, is satisfied.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
Based on the type of employee in a table I need to return a 0 or 1 to then be output to specific spot in a file
For EXB return 1 for all other types FTR, FTRG, PTRG and SALR return 0.
select case when type = 'EXB' then 1 else 0 end
from employee
Use case <column> when 'EXB' then 1 else 0 end as shown in the SQL Fiddle to select values in the expression query.
Alternately, use a lookup table to map from your codes to the numeric values.
Then use one of the XML modifiers in the query to return an xml fragment.