What is the equivalent of the Oracle "Dual" table in MS SqlServer?

Sql ServerOracleDual Table

Sql Server Problem Overview


What is the equivalent of the Oracle "Dual" table in MS SqlServer?

This is my Select:

SELECT pCliente,
       'xxx.x.xxx.xx' AS Servidor,
       xxxx AS Extension,
       xxxx AS Grupo,
       xxxx AS Puerto
FROM DUAL;

Sql Server Solutions


Solution 1 - Sql Server

In sql-server, there is no dual you can simply do

SELECT pCliente,
       'xxx.x.xxx.xx' AS Servidor,
        xxxx AS Extension,
        xxxx AS Grupo,
        xxxx AS Puerto

However, if your problem is because you transfered some code from Oracle which reference to dual you can re-create the table :

CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
VALUES ('X')
GO

Solution 2 - Sql Server

You do not need DUAL in mssql server

in oracle

select 'sample' from dual

is equal to

SELECT 'sample'

in sql server

Solution 3 - Sql Server

While you usually don't need a DUAL table in SQL Server as explained by Jean-François Savard, I have needed to emulate DUAL for syntactic reasons in the past. Here are three options:

Create a DUAL table or view
-- A table
SELECT 'X' AS DUMMY INTO DUAL;

-- A view
CREATE VIEW DUAL AS SELECT 'X' AS DUMMY;

Once created, you can use it just as in Oracle.

Use a common table expression or a derived table

If you just need DUAL for the scope of a single query, this might do as well:

-- Common table expression
WITH DUAL(DUMMY) AS (SELECT 'X')
SELECT * FROM DUAL

-- Derived table
SELECT *
FROM (
  SELECT 'X'
) DUAL(DUMMY)

Solution 4 - Sql Server

In SQL Server there is no dual table. If you want to put a WHERE clause, you can simple put it directly like this:

SELECT 123 WHERE 1<2

I think in MySQL and Oracle they need a FROM clause to use a WHERE clause.

SELECT 123 FROM DUAL WHERE 1<2

Solution 5 - Sql Server

This could be of some help I guess, when you need to join some tables based on local variables and get the information from those tables:

Note: Local variables must have been

Select  @XCode     as 'XCode '
	   ,@XID	   as 'XID	 '	
	   ,x.XName	   as 'XName '
	   ,@YCode 	   as 'YCode '
	   ,@YID       as 'YID	 '
	   ,y.YName	   as 'YName '
From (Select 1 as tst) t
Inner join Xtab x on x.XID = @XID
Inner join Ytab y on y.YID = @YID

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionwabregocView Question on Stackoverflow
Solution 1 - Sql ServerJean-François SavardView Answer on Stackoverflow
Solution 2 - Sql ServerOmerView Answer on Stackoverflow
Solution 3 - Sql ServerLukas EderView Answer on Stackoverflow
Solution 4 - Sql ServerHENG VongkolView Answer on Stackoverflow
Solution 5 - Sql ServerChakradharView Answer on Stackoverflow