表视图以null作为条件

时间:2012-12-14 02:04:46

标签: sql-server view

我有两张桌子,一张用于音乐,另一张用于艺术家。音乐有专辑名称,artistID(外键)和发布。艺术家有3列,一列用于PKID,一列用于乐队名称,一列用于歌手姓名。如果它是乐队,乐队名称将被填写,歌手名称将为空。反之亦然。

我似乎无法创建一个表视图,如果bandname不为null,则会显示Band名称,反之亦然。我尝试了很多不同的方法,包括一个声明变量,但没有编译过。这是我尝试过的最新事情。我有点理解出了什么问题,但如果我不能宣布@BandName,我不知道该向前发展的方向。

CREATE VIEW MusicWithArtist AS

    IF B.BandName IS NOT NULL
        BEGIN 
         SELECT A.Title, A.ReleaseDate, B.BandName
            FROM Music A, Artist B
                WHERE A.ArtistID = B.ArtistID
        END;
    ELSE
        BEGIN
         SELECT A.Title, A.ReleaseDate, B.SingerName
            FROM Music A, Artist B
                WHERE A.ArtistID = B.ArtistID
        END;

1 个答案:

答案 0 :(得分:2)

CREATE VIEW MusicWithArtist AS
     SELECT A.Title, A.ReleaseDate, ISNULL(B.BandName,B.SingerName) ArtistName
        FROM Music A, Artist B
            WHERE A.ArtistID = B.ArtistID

您使用哪种环境会阻止您使用JOIN?自SQL92以来,已经指定了Ansi风格的连接,这是多年前的事情并不好笑。

CREATE VIEW MusicWithArtist AS
     SELECT A.Title, A.ReleaseDate, ISNULL(B.BandName,B.SingerName) ArtistName
        FROM Music A
        JOIN Artist B ON A.ArtistID = B.ArtistID;