sql >> Databáze >  >> RDS >> Sqlserver

Sloučení dat ze 2 tabulek

Chcete-li se dotazovat na data ve více tabulkách, chcete spojit tabulky . Není mi 100% jasný vztah mezi vašimi dvěma tabulkami, ale pokud MedicalRecordID je správný vztah, pak by váš dotaz měl vypadat nějak takto:

SELECT
    CONVERT(char(80), i.InvDate,3) AS InvDate,
    i.InvoiceNo,
    i.EmployerCode,
    i.TaxAmount + i.SubTotal AS Amount,
    '' AS Payment,
    pd.LastName,
    pd.GivenName
FROM
    dbo.Invoice i
        INNER JOIN dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
;

Funguje to, pokud mezi tabulkami existuje vztah jedna ku jedné a pokud vždy existuje PatientDetails záznam pro každou fakturu. Pokud PatientDetails je nepovinné, pak použijte LEFT JOIN namísto INNER JOIN .

UPRAVIT (reakce na komentář):

Vsadím se, že převod DateTime ve vaší klauzuli WHERE nefunguje tak, jak očekáváte. Za předpokladu, že dtpFrom a dtpTo jsou DatePicker pravděpodobně budete chtít použít SelectedDate vlastnost namísto Text . Také bych velmi doporučil používat parametry ve vašich dotazech spíše než zřetězení řetězců. Váš kód bude čistší a vyhnete se vkládání SQL . Zde je rychlý příklad:

using (SqlConnection connection = new SqlConnection( ... ))
{
    connection.Open();

    string sql = @"
                SELECT
                    CONVERT(char(80), i.InvDate,3) AS InvDate,
                    i.InvoiceNo,
                    i.EmployerCode,
                    i.TaxAmount + i.SubTotal AS Amount,
                    '' AS Payment,
                    pd.GivenName
                FROM
                    dbo.Invoice i
                        LEFT JOIN dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
                WHERE
                    InvDate >= @fromDate AND InvDate <= @toDate";

    SqlCommand cmd = new SqlCommand(sql, connection);
    cmd.Parameters.AddWithValue("@fromDate", dtpFrom.SelectedDate);
    cmd.Parameters.AddWithValue("@toDate", dtpTo.SelectedDate);

    using (SqlDataReader reader = cmd.ExecuteReader())
    {
        // do stuff with results
    }
}



  1. Jak vytvořit trasování SQL pro zachycení událostí serveru SQL

  2. Jak sečíst nový a naposledy vložený záznam se stejným ID a vložit výsledek do nového záznamu

  3. Jak číst hodnoty dat NCLOB, CLOB z databáze Oracle pomocí stránek Classic ASP?

  4. Profilování databáze v IRI Workbench