sql >> Database >  >> RDS >> Sqlserver

Twee SQL-scripts samenvoegen als voorwaarde in Select query

Ik zou de waar-instructie overslaan en een kolom maken voor de numerieke postcode en een voor de andere. Zoals dit:

SELECT 
    [Fm].[Id], 
    [Sdp].[FirstName], 
    [Sdp].[LastName], 
    [Sdp].[SSN],
    [Sdp].[StoreName], 
    (
        CASE WHEN ISNUMERIC([Sdp].[PostalCode])=1
            THEN 0
            ELSE NULL
        END
    ) AS NumericPostalCode,
    (
        CASE WHEN ISNUMERIC([Sdp].[PostalCode])=0
            THEN [Sdp].[PostalCode]
            ELSE NULL
        END
    ) AS PostalCode,
    [Fc].[Id], 
    [Sdp].[Address]
FROM 
    [SRM].[SiteMembers].[DProfile] AS [Sdp]
INNER JOIN [SRM].[SiteMembers].[Member] AS [Sm]
    ON [Sdp].[Member_Id] = [Sm].[Id]
INNER JOIN [FRM].[Members].[Member] AS [Fm]
    ON [Sm].[UserId] = [Fm].[UserId]
INNER JOIN [SRM].[General].[City] AS [Sc]
    ON [Sdp].[City_Id]=[Sc].[Id]
INNER JOIN [FRM].[General].[City] AS [Fc]
    ON [Fc].[Title]=[Sc].[Title] 
    COLLATE SQL_Latin1_General_CP1_CI_AS´

Bewerk 1

Ik weet dat dit zal resulteren in twee kolommen. Maar u kunt gegevenstypen niet in één kolom hebben. Maar ik denk dat je het ook zoiets kunt doen.

SELECT 
    [Fm].[Id], 
    [Sdp].[FirstName], 
    [Sdp].[LastName], 
    [Sdp].[SSN],
    [Sdp].[StoreName],
    (
        CASE WHEN ISNUMERIC([Sdp].[PostalCode])=0
            THEN [Sdp].[PostalCode]
            ELSE '0'
        END
    ) AS PostalCode,
    [Fc].[Id], 
    [Sdp].[Address]

Dit werkt omdat de numerieke een '0' is als een varchar.

Bewerk 2

Je kunt het ook als volgt doen:

SELECT CAST('asdasd' AS sql_variant)
UNION ALL
SELECT CAST(0 AS sql_variant)

Maar dit is een vuile oplossing voor dit probleem. De sql_variant is een database-object. Dus mijn conclusie is:gebruik de kolom als u verschillende gegevenstypen wilt hebben. Als de waarden hetzelfde gegevenstype kunnen zijn, gebruikt u dezelfde kolom. Gebruik sql_variant niet om dit soort problemen op te lossen. U betaalt een hoge prijs voor het behouden van de code.

Hoop dat dit helpt.



  1. hoe voltooide bestellingen in woocommerce te verwijderen met behulp van een mijn sql-query

  2. ASP.NET Lidmaatschap/rolproviders voor MySQL?

  3. Wanneer moet ik matrixkolommen gebruiken vs. associaties in rails

  4. De thread_stack-parameter van de MySQL-server - wat is het? Hoe groot moet het zijn?