0

私は以下のようなSQLステートメントを持っています。unionキーワードを使用せずに、このsqlステートメントの結果に単一の行(コード= 0、desc = 1)を追加するにはどうすればよいですか?ありがとう。

select code, desc
from material 
where material.ExpireDate ='2010/07/23'
4

3 に答える 3

3

UNION キーワードを使用するテーブルのビューをいつでも作成できます

CREATE VIEW material_view AS SELECT code, desc, ExpireDate FROM material UNION SELECT '0', '1', NULL;
SELECT code, desc FROM material_view WHERE ExpireDate = '2010/07/23' OR code = '0';
于 2010-07-28T08:11:29.500 に答える
2
 WITH material   AS
 (
 SELECT * 
 FROM 
      (VALUES (2, 'x', '2010/07/23'), 
              (3, 'y', '2009/01/01'), 
              (4, 'z', '2010/07/23')) vals (code, [desc], ExpireDate)
 )

SELECT 
     COALESCE(m.code,x.code) AS code, 
     COALESCE(m.[desc],x.[desc]) AS [desc]
FROM material m
FULL OUTER JOIN (SELECT 0 AS code, '1' AS [desc] ) x ON 1=0
WHERE m.code IS NULL OR m.ExpireDate ='2010/07/23'

与える

code        desc
----------- ----
2           x
4           z
0           1
于 2010-07-28T12:39:40.810 に答える
0

ユニオンもビューも使用したくないので、マテリアル テーブルにダミー行を追加することをお勧めします (code = 0、desc = 1、および ExpireDate で、通常は決して選択されないもの - 例: 01) 1900 年 1 月) - 次に、次のようなクエリを使用します。

select code, desc
from material 
where material.ExpireDate ='2010/07/23' or 
    material.ExpireDate ='1900/01/01' 

通常、ユニオンは私の好みのオプションです。

于 2010-07-28T12:30:50.250 に答える